0 0

结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?5

结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?比如:
把“1”加密得到:2lciyOzbzWGgc4XggfEwlg==
把“2lciyOzbzWGgc4XggfEw”加密得到:9pmPlgzttQuLvO3NHCRQpg==
请大虾们赐教,谢谢!
2008年12月27日 16:16

3个答案 按时间排序 按投票排序

0 0

如果只是为了查看原文,在网上搜索一下“乱码查看器”。那玩意可以编码,也可以解码。

2009年1月07日 15:16
0 0

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
0 0

有==是 BASE64得到的
24位是根据128位的HASH算法得到的。 至于用了什么hash算法, 我也无法知道。 肯定不是M5。 你需要了解下, 你是如何得到这个值的。 你明明知道结果, 应该程序里能让你测试得到的。 他不是一个加密算法, 是一个数字摘要算法。

2008年12月27日 20:03

相关推荐

Global site tag (gtag.js) - Google Analytics