blog.csdn.net/singlerace/article/details/1360400

前 几天在论坛上看到有人在讨论MD5的破解,很多人对MD5的理解让我大跌眼镜:有人认为MD5是一种加密算法,有人认为由于无法从MD5 hash回复出明文,因此对其破解的研究毫无意义,甚至因此置疑王小云教授的成果毫无意义,真是让人遗憾。 因此今天决定说说MD5的破解,算是义务普及。有关MD5的描述请参考Wikipedia/MD5,这里就不多废话了。
一般来说,对一个HASH算法的攻击可分三个级别:
1,Preimage attack(原像攻击?):给定h,找到明文M,使得h=hash(M),如果一个HASH算法
    被人找出preimage attack,那这种算法也就完蛋了;
2,Second preimage attack(次原像攻击?):给定明文M1,找到另一明文M2(不等于M1),
    使得hash(M1)=hash(M2);
3,collision attack(碰撞攻击):找到M1和M2,使得hash(M1)=hash(M2)。
 
关于MD5,王小云教授的成果是实现了在可计算时间内实现找到collision。目前的进展是,基于王晓云教授论文的改进算法,有人可以做到 用笔记本在几小时之内找到collision。这意味着什么?有很多人认为collision毫无意义,因为在实际应用中M1和M2无法任意指定。其实这 是只知其一不知其二。和其他流行的HASH算法一样,MD5有一个众所周知的弱点,叫做length extension,可用数学语言描述如下:
    若,MD5(M1) = MD5(M2)
    则,MD5(M1||M') = MD5(M2||M')
    其中||代表串连接。
 
目前的collision搜索算法可以任意指定初始hash状态,这意味着可任意构造前缀。另外length extension意味着可以任意构造后缀。因此基于任意collision,我们可以构造出两个MD5 hash相同的串,使得:
    MD5(preamble+R1+suffix) = MD5(preamble+R2+suffix),
    其中,MD5(preamble+R1) = MD5(preamble+R2)

总之,就目前而言,“MD5 is definitely not practically collision-free”。虽然只是collision attack,但在攻击者能控制并任意构造明文时,这种攻击就是实际可行的。王小云教授成果的意义在于找到了一种实际可行的collision搜索算法, 当然她的工作也是建立在其他人的基础上的。

关于MD5破解这件事相关推荐

  1. 她破解哈希函数算法:坚持10年做一件事一定能做成

    今年9月7日,2019未来科学大奖揭晓,这项设立4年的大奖迎来首位女性得主--密码学家王小云.在信息时代,金融服务.网络安全等背后都离不开密码系统的"护航".在大众眼中,密码带着神 ...

  2. 谷歌pay破解_Google Pay缺少Google闻名的一件事-UX案例研究

    谷歌pay破解 Disclaimer: The views expressed in the blog post is purely based on personal experience. It ...

  3. 安裝 CentOS 7 後必做的七件事

    CentOS是最多人用来运行服务器的Linux版本,当在一台主机或VPS上安装CentOS 7后,首要的工作肯定是加强它的安全性,以下列出的七件事,是进一步配置系统和安装其他软件前必须做的. 1. 更 ...

  4. 面试题字符集和编码区别_您和理想工作之间的一件事-编码面试!

    面试题字符集和编码区别 A recruiter calls you for a position with your dream company. You get extremely excited ...

  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第30篇]大致简述密钥协商中的BR安全定义

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 在两方之间建密钥共享是一件密码 ...

  6. Kali linux学习入门-安装Kali Linux 后需要做的 20 件事

    安装Kali Linux 后需要做的 20 件事 [51CTO精选译文]我在本文中整理出了安装一份全新的Kali Linux后总是要做的若干件事情.由于我有多台笔记本电脑和工作站,所以尽量扩大下列操作 ...

  7. 产品心经:产品经理应该知道的60件事

    题记 有幸拜读闫荣的<产品心经:产品经理应该知道的60件事> ,对书中产品经理的软技能和硬技能,深入浅出的讲解有很大的共鸣.唯一不好的一点就是整本书篇章有点多60篇,看书也需要坚持哈.正如 ...

  8. 安装Ubuntu后必须要做的几件事 一 --基础应用篇

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 2017 ...

  9. 盛京剑客系列22:一个成功的职业操盘手每天应做的三件事

    发布于 2018-09-27   ============================================== (本文是对职业操盘手而写,业余投资者切勿对号入座)   对于职业操盘手每 ...

最新文章

  1. Cookie ,Session
  2. OpenCV手写数字字符识别(基于k近邻算法)
  3. 外星人进化_深层分析宇宙常数对生命形成进化的影响,外星人或许根本就“不是人”!...
  4. mysql002创建表
  5. 对口高考 html语言,VB对口高考模拟试题1
  6. mysql 主主切换_mysql 主-主配置中进行切换
  7. 百万数据php7取出循环_Thinkphp5 分批批量导出百万条数据记录的Code,不用PHPEXCEL哦!...
  8. Delphi多媒体设计之播放WAVE文件(API)
  9. retinex(SSR,MSR,MSRCR)的优缺点
  10. 云中漫步-柴米油盐之上
  11. Jpa 注解详解 映射详解 一对多 多对一
  12. 解决“Windows 平台 FIPS 验证的加密算法的一部分”问题
  13. Redis 持久化,写入磁盘的方式
  14. 更换android开机动画须选择好正确的压缩格式
  15. 用zookeeper体验监听服务器是否还活着
  16. WPF使用SaveFileDialog对话框保存文件时不要用DialogResult.OK判断对话框正常关闭
  17. 一维信号小波去噪原理及python实现示例
  18. SVG SMIL 动画(基本动画 、变换动画)
  19. CSS---按住录音提示框制作
  20. tar命令(linux解压缩命令)

热门文章

  1. Java并发编程:同步容器
  2. PHP编译configure时常见错误(转)
  3. 关于Js(四)------ jquery ajax 中json接收数据注意事项
  4. uva11609(组合数学,快速幂)
  5. 怎样快速提高新站权重收录
  6. SharePoint2007安装图文详解三:安装SqlServer2005
  7. 跟我学MVC系列(Repository模式、LINQ、EF、IOC框架Castle、JQuery、AJAX)(六)(应用IOC模式)...
  8. Visual Studio Code 编辑器使用
  9. (十九)ArcGIS JS 加载WMS服务(超图示例)
  10. 【百度编辑器ueditor】工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等...