atitit.md5算法的原理 与 总结
2015-08-11 15:14
399 查看
atitit.md5算法的原理 与 总结
1. MD5的位数 128位1
2. 字节数组转换为32位字符串 base161
2.1. 十六进制字符用4个二进制位来表示1
2.2. byte[]和十六进制字符串相互转换2
3. md5的base64表示法3
4. 参考3
正好0--f 可以完整的标识4位比特。。
2的四次方等于16。所以要用4个二进制位表示一个十六进制字符
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
如下所示:
所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果
new String(H) + new String(L)。
同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。
根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了
Java利用MessageDigest获取字符串或文件MD5详解 - 鼠穴 - 开源中国社区.htm
1. MD5的位数 128位1
2. 字节数组转换为32位字符串 base161
2.1. 十六进制字符用4个二进制位来表示1
2.2. byte[]和十六进制字符串相互转换2
3. md5的base64表示法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数组与十六进制字符串互转 - 鑫鑫哥哥呀的个人页面 - 开源中国社区.htmJava利用MessageDigest获取字符串或文件MD5详解 - 鼠穴 - 开源中国社区.htm
相关文章推荐
- 将博客搬至CSDN
- Struts2基础---struts.xml配置
- HDU 1312 Red and Black
- 关于浏览器默认字体
- Linux编程基础——GDB(设置断点)
- 对象容器、对象数组、集合容器(输出改进)
- 智能指针unique_ptr
- js简易选项卡
- 数据结构(29)图的遍历
- Spark中如何生成Avro文件
- javafx DragDropped file
- 关于同一个数据库的表备份和表恢复的sql简单语句
- java 动态代理
- oracle 储存过程
- Linux中使用curl命令访问https站点4种常见错误和解决方法
- 手机系统版本跳转
- 74.明明的随机数
- JQuery用on绑定的区别
- hdu 4070 福州赛区网络赛J 贪心 ***
- 将网卡中断分布到多个cpu上的方法