atitit.md5算法的原理 与 总结

atitit.md5算法的原理 与 总结

 

 

1MD5的位数 1281

2字节数组转换为32位字符串 base161

2.1. 十六进制字符用4个二进制位来表示1

2.2. byte[]和十六进制字符串相互转换2

3md5base64表示法3

4参考3

 

 

1. MD5的位数 128位

 

生成一个128为的字节数组。。

 

 

2. 字节数组转换为32位字符串 base16

4位可以1111

 

正好0--f 可以完整的标识4位比特。。

2.1. 十六进制字符用4个二进制位来表示

十六进制的每个字符需要用4位二进制位来表示

2的四次方等于16。所以要用4个二进制位表示一个十六进制字符

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

如下所示:

 

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

A

1010

B

1011

C

1100

D

1101

E

1110

F

1111

 

2.2. byte[]和十六进制字符串相互转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示。

所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果

new String(H) + new String(L)。

同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了

 

3. md5的base64表示法

4. 参考

Java byte数组与十六进制字符串互转 鑫鑫哥哥呀的个人页面 开源中国社区.htm

Java利用MessageDigest获取字符串或文件MD5详解 鼠穴 开源中国社区.htm

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值