MD5哈希算法及其原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MD5哈希算法及其原理
“ MD5算法介绍。


MD5消息摘要算法(MD5 Message-Digest Algorithm),是在计算机领域被⼴泛使⽤的⼀种哈希算法,⽤来对信息进⾏完整性保护。

它由美国密码学家Ronald Linn Rivest设计,于1992年公开,⽤以取代MD4算法。

它的规范为RFC 1321。

MD5将⼀个任意长度的数据经过编码得到⼀个128位(16字节)的哈希值,即为MD5值。

01

MD5功能
MD5算法对任意长度的消息输⼊,产⽣⼀个128位(16字节)的哈希结构输出。

在处理过程中,以512位输⼊数据块为单位。

02

MD5⽤途及特征
MD5通常应⽤在以下场景:
1、防篡改,保障⽂件传输可靠性
如SVN中对⽂件的控制;⽂件下载过程中,⽹站提供MD5值供下载后判断⽂件是否被篡改;BT中对⽂件块进⾏校验的功能。

2、增强密码保存的安全性。

例如⽹站将⽤户密码的MD5值保存,⽽不是存储明⽂⽤户密码,当然,还会加SALT,进⼀步增强安全性。

3、数字签名
在部分⽹上赌场中,使⽤MD5算法来保证过程的公平性,并使⽤随机串进⾏防碰撞,增加解码难度。

MD5算法具有以下特点:
1、压缩性
任意长度的数据,算出的MD5值长度都是固定的。

2、易计算
从原数据计算出MD5值很容易。

3、抗修改性
对原数据进⾏任何改动,哪怕只修改1个字节,所得到的MD5值都有很⼤区别。

4、强抗碰撞
已知原数据和其MD5值,想找到⼀个具有相同MD5值的数据(即伪造数据)是⾮常困难的。

03

MD5算法过程
⽹络中很容易找到MD5算法的相关实现代码,这⾥就不列出了。

我们只需要关⼼它的实现框架即可。

第⼀步:消息填充
补长到512的倍数
最后64位为消息长度(填充前的长度)的低64位
⼀定要补长(64+1~512),内容为100…0(如若消息长448,则填充512+64)
第⼆步:分割
把结果分割为512位的块:Y0,Y1,…(每⼀个有16个32⽐特长字)
第三步:计算
初始化MD buffer,128位常量(4个32bit字),进⼊循环迭代,共L次
每次:⼀个输⼊128位,另⼀个输⼊512位,结果输出128位,⽤于下⼀轮输⼊
第四步:结果
最后⼀步的输出即为散列结果128位。

04

MD5安全性
MD5虽然被⼴泛应⽤,但仍存在弱点,可以被加以破解,MD5算法⽆法防⽌碰撞,并已有碰撞成功案例。

对于需要⾼度安全性的数据,专家⼀般建议改⽤其他算法,如SHA-2等。

另外,如果⼀个⽹站使⽤MD5进⾏⽤户名和密码的保存,请记住,⼀定要加SALT,不然,和明⽂保存差不多,基本⽆安全性可⾔。

⽬前互联⽹上已经有很多字符串与MD5的数据库,基本上可以认为没有加SALT的MD5值类似于裸奔了。

05

MD5⼯具
进⾏MD5的计算,有很多⼯具可供使⽤,如本公众号之前的⽂章《》介绍的Fiddler的TextWizard功能,还有各种可以计算⽂件MD5值的⼯具。

在MD5的逆向⼯具⽅⾯,也有不少⽹站提供MD5值的查询,可以根据MD5值反查字符串,这些⽹站,收集了⼤量字符串的MD5值,在根据密码的MD5查询字符串时很有⽤。

如国内的:
国外的:
在⼀个⽹站查询不到结果时,多试⼏个⽹站,另外,根据使⽤经验,国外的⼏个⽹站查询效果⽐国内的好。

对MD5的爆破有⼼得体会,请联系我分享。

长按进⾏关注。

相关文档
最新文档