- md5叫做信息摘要演算法,可以产生一个128的散列值(hash val)
- 输入任意长度的信息,输出128位的信息
- 不同输入输出一定不同
- md5不可逆,不可逆的原因是因为他是一个散列函数,在计算过程中丢失了很多信息
- 在注册的时候我们把密码进行md5加密,将加密过后的散列值存到数据库,当用户登录时同样去计算md5和数据库中的值作比较,相同就登录。保证了如果数据库被盗,用户的密码也是密文,也可以避免密码被系统管理员看到。
md5安全嘛?
在注册时候我们经常使用手机号,生日,qq等作为密码,其实是不安全的。。一些恶意攻击者会把常用的密码md5,将数据存储,然后和你的md5匹配,有可能在短时间内拿到明文。所以一般我们都要强制用户设置密码的时候,增加复杂度
md5过程
- 填充 :如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448。填充的方法是填充一个1和n个0。填充完后,信息的长度就为N*512+448(bit);
- 记录信息长度: 用64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位。
- 装入标准幻数 :
- 循环运算加密