-
结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?5
结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?比如:
把“1”加密得到:2lciyOzbzWGgc4XggfEwlg==
把“2lciyOzbzWGgc4XggfEw”加密得到:9pmPlgzttQuLvO3NHCRQpg==
请大虾们赐教,谢谢!2008年12月27日 16:16
3个答案 按时间排序 按投票排序
-
Base64 使用US-ASCII子集的64个字符,即大小写的26个英文字母,0-9,+,/。
编码总是基于3个字符,每个字符用8位二进制表示,因此一共24位,再分为4四组,每组6位,表示一个Base64的值。如下:
"A", "B", "C", "D", "E", "F", "G", "H", "I","J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f",
"g", "h", "i","j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/"
Base64值为0就是A,为27的就是b。这样,每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。
举个例子说BASE64算法:
比如字符串 abcde
先取前三个字节abc
a b c
97 98 99
然后把它们的ascii码转换成二进制(1字节8位,不足8位在前面补0 )
01100001 01100010 01100011
然后对这组二进制数据重新分组,每组6位
011000 010110 001001 100011
再分别把这四组二进制转换成十进制数据
24 22 9 35
然后在
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
这里边对照一下
0对第1个,1对第2个依此类推
24就对第25个Y
22对第23个W
9对第10个J
35对第36个j
加密后的密文就是YWJj
对于abcde剩下的后面两个字节"de"
这是不足3字节的情况
先把它转换了
ascii码是
100 101
转成二进制是
01100100 01100101
再分成6位一组的小组
重新分组
011001 000110 0101
最后一组不足6位,在后面补0。
011001 000110 010100
转10进制
25 6 20
然后在
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
这里边对照
结果是ZGU
前面说过:每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。
最后de经过编码的结果就是ZGU=
abcde经过编码的结果就是YwJjZGU=
这是编码过程,解码和编码是相反的一个过程,这里就不多说了。
识别是不是Base64编码其实挺简单的,Base64编码结果是由26个小写字母加26个大写字母加数字和+/这两个符号组成的,稍微观察一下挺容易看出来的。2009年1月07日 15:09
-
有==是 BASE64得到的
24位是根据128位的HASH算法得到的。 至于用了什么hash算法, 我也无法知道。 肯定不是M5。 你需要了解下, 你是如何得到这个值的。 你明明知道结果, 应该程序里能让你测试得到的。 他不是一个加密算法, 是一个数字摘要算法。2008年12月27日 20:03
相关推荐
最新24位CRC文本
javascript中比较运算符'=='与'==='可能大家用的比较多,但是大家对他的区别不是很清楚,接下来小编给大家介绍下js中三个等号和两个等号的区别(== 和 ===),感兴趣的朋友可以参考下
QQ加密的逆算法编写 '复制代码 Public Function Base64Decode(cString As String) As String 'QQ版Base64解码 Dim dStr As String, tStr As String Dim i As Integer Dim l As Integer l = Len(cString) - 2 '减去两...
如果需要定制或者实现相关的脚本都可以私信作者。 现在公司都要求填每天写周报、日报、工时之类的信息,有时候弄着弄着就忘记了。导致工时异常,被领导点名啥的。索性写个自动填写的脚本+定时任务+工作日判断+...
以下是对php中三个等号(===)和两个等号(==)的区别进行了详细的分析介绍,需要的朋友可以过来参考下
前两天在写代码的时候,突然收到警告说项目代码中存在 XSS 漏洞,遂立即根据报告的 URL 排查页面代码,虽然很快就修复了,而且同样问题的讨论两年前就有了,一般来说相对有经验的同学也应该都知道这个点,但是还是...
在Javascript中判断相等关系有双等号(==)和三等号(===)两种。其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等)。 因此有几个常识知识: 1、对于string,number等基础类型,==和===是有区别...
这是一篇很好的文章,关于equ和等号的问题,希望被大家所引用
一个等号 =:表示赋值 ; 两个等号 ==:先转换类型再比较 ; 三个等号 ===:先判断类型,如果不是同一类型直接false。 以上就是小编为大家带来的细数JavaScript 一个等号,两个等号,三个等号的区别全部内容了,希望...
NULL 博文链接:https://jiangzhenwei6.iteye.com/blog/764267
等号运算符重载 函数重载 c++代码 开发工具:VS2010
Makefile文件中的等号左右两边能不能有空格
昨天经高手指导 测试使用了 ==?: 和 if()else() xzyHe 为 DropDownlist 值,如果为空取值为0 代码如下: if (xzyHe ==””){int xzyHe==0;else{int xzyHe = DropDownlist.Text.Trim();} 另外一种写法: 代码如下: int...
1.“==”和Equals两个真的有关联吗? 对于“==”和Equals大多数网友都是这样总结的: “==” 是比较两个变量的值相等。 Equals是比较两个变量是否指向同一个对象。 public class Person { public ...
本文用现代概率论方法 证明马尔可夫不等式与切比雪夫不等式 特别是给出两个不等式等号 成立的充要条件 这在流行的概率统计教科书中是没有的
java中equals和等号(==)的区别浅谈,需要的朋友可以参考一下
例如AA=BB,现在将等号左右内容互换,变成BB=AA的形式