读书笔记一【哈希——MD5】
计算机中,将某种数据转换成指定范围内的数字数字或字母叫做哈希(散列、hashing)
哈希后的值无法像加密解密那样恢复为原文值,通常用于文件校验或数字签名等
好的散列算法应具有:
- 充分利用所有数据位
- 不可逆
- 雪崩特性
MD5散列:
1.编码
MD5将密码转换成一个512位的数据块
假设原文为10位,则编码后前80位(8位表示一个字符)为原文各字符的ASCII码值,中间填0
最后64位为原文编码长度的二进制值,以原文10位为例,因为编码后应占8*10位,则后64位为0000...01010000
2.按位运算
简单的二进制运算,略
3.MD5散列过程
MD5通过将一个固定的32*4位二进制数据,每32位循环与编码中的一段进行与或非二进制运算、调换顺序后,多次反复后,获得一个新的长度为128位的散列值
4.补充
- MD5默认为128位,其他位数是截取一部分
- MD5不能恢复,但是可以碰撞
- MD5为1对多关系,即一个原文对应一个MD5值,一个MD5值对应多个原文