漫画:如何破解MD5算法
转载自 玻璃猫 程序员小灰
在之前的漫画中,我们介绍了MD5算法的基本概念和底层原理,没看过的小伙伴们可以点击下面的链接:《漫画:什么是MD5算法?》
这一次,我们来讲解如何破解MD5算法。
设MD5的哈希函数是H(X),那么:
H(A) = M
H(B) = M
任意一个B即为破解结果。
B有可能等于A,也可能不等于A。
用一个形象的说法,A和B的MD5结果“殊途同归”。
MD5碰撞通常用于登陆密码的破解。应用系统的数据库中存储的用户密码通常都是原密码的MD5哈希值,每当用户登录时,验签过程如下:
如果我们得到了用户ABC的密码哈希值E10ADC3949BA59ABBE56E057F20F883E,并不需要还原出原密码123456,只需要“碰撞”出另一个原文654321(只是举例)即可。登录时,完全可以使用654321作为登陆密码,欺骗过应用系统的验签。
暴力枚举法
字典法
彩虹表法
H(X):生成信息摘要的哈希函数,比如MD5,比如SHA256。
R(X):从信息摘要转换成另一个字符串的衰减函数(Reduce)。其中R(X)的定义域是H(X)的值域,R(X)的值域是H(X)的定义域。但要注意的是,R(X)并非H(X)的反函数。
通过交替运算H和R若干次,可以形成一个原文和哈希值的链条。假设原文是aaaaaa,哈希值长度32bit,那么哈希链表就是下面的样子:
这个链条有多长呢?假设H(X)和R(X)的交替重复K次,那么链条长度就是2K+1。同时,我们只需把链表的首段和末端存入哈希表中:
给定信息摘要:920ECF10
如何得到原文呢?只需进行R(X)运算:
R(920ECF10) = kiebgt
查询哈希表可以找到末端kiebgt对应的首端是aaaaaa,因此摘要920ECF10的原文“极有可能”在aaaaaa到kiebgt的这个链条当中。
接下来从aaaaaa开始,重新交替运算R(X)与H(X),看一看摘要值920ECF10是否是其中一次H(X)的结果。从链条看来,答案是肯定的,因此920ECF10的原文就是920ECF10的前置节点sgfnyd。
需要补充的是,如果给定的摘要值经过一次R(X)运算,结果在哈希表中找不到,可以继续交替H(X)R(X)直到第K次为止。
给定信息摘要:FB107E70
经过多次R(X),H(X)运算,得到结果kiebgt
通过哈希表查找末端kiebgt,可以找出首端aaaaaa
但是,FB107E70并不在aaaaaa到kiebgt的哈希链条当中,这就是R(X)的碰撞造成的。
这个问题看似没什么影响,既然找不到就重新生成一组首尾映射即可。但是想象一下,当K值较大的时候,哈希链很长,一旦两条不同的哈希链在某个节点出现碰撞,后面所有的明文和哈希值全都变成了一毛一样的值。
这样造成的后果就是冗余存储。原本两条哈希链可以存储 2K个映射,由于重复,真正存储的映射数量不足2K。
2004年,王小云教授提出了非常高效的MD5碰撞方法。
2009年,冯登国、谢涛利用差分攻击,将MD5的碰撞算法复杂度进一步降低。
几点补充:
对于单机来说,暴力枚举法的时间成本很高,字典法的空间成本很高。但是利用分布式计算和分布式存储,仍然可以有效破解MD5算法。因此这两种方法同样被黑客们广泛使用。
—————END—————
漫画:如何破解MD5算法相关推荐
- 漫画:如何破解MD5算法?
来自:梦见(微信号:dreamsee321) 在之前的漫画中,我们介绍了MD5算法的基本概念和底层原理,没看过的小伙伴们可以点击下面的链接: 漫画:什么是MD5算法? 这一次,我们来讲解如何破解MD5 ...
- 安全架构-md5算法介绍
安全架构-md5算法介绍 安全架构知识,我们必不可少离不开的就是md5,包括接口签名,文件摘要,密码加密等等.本文介绍md5算法. 文章目录 安全架构-md5算法介绍 一.md5是什么? 二.特点 三 ...
- 漫画:什么是MD5算法?
来自:梦见(微信号:dreamsee321) 摘要哈希生成的正确姿势是什么样呢?分三步: 1.收集相关业务参数,在这里是金额和目标账户.当然,实际应用中的参数肯定比这多得多,这里只是做了简化. 2.按 ...
- MD5算法可以破解么?为什么?网上有在线破解是怎么回事?
答:MD5算法不可以破解. 因为MD5是单向散列函数,输入任意长度的信息,经过处理,输出为128位的信息:不同的输入得到的不同的结果:根据128位的输出结果不可能反推出输入的信息.所以不能从密文(散列 ...
- (摘录)MD5算法研究与破解
md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data secur ...
- MD5算法已经被破解
MD5算法已经被破解 发表: babyfrog 时间: 2004/09/04 19:55:19 发信人: bluemyosotis (抽筋的天使), 信区: SDU 标 题: 密码学领域重大发现:山东 ...
- 石破天惊! MD5算法被破解!
按:MD5不安全了?SHA不安全了?HASH完了?一大早来到办公室,无意中看到这么一条新闻,继而在网上搜索了一个多小时,没有找到王教授这篇文章的原文.只看到山大几十分钟前发表的这篇新闻.期待各位IT同 ...
- 彩虹表破解开机密码、MD5算法等的原理
http://www.91ri.org/7593.html 自己发到91ri的,博客备份下. 前言 或许对于大多数人来说,实际中并不需要了解这些理论,能够使用现成的工具就行,但是我个人觉得了解了这些 ...
- 漫画:什么是MD5算法
转载自 玻璃猫 程序员小灰 摘要哈希生成的正确姿势是什么样呢?分三步: 1.收集相关业务参数,在这里是金额和目标账户.当然,实际应用中的参数肯定比这多得多,这里只是做了简化. 2.按照规则,把参数名和 ...
最新文章
- Django Web开发学习笔记(4)
- Codeforces 524F And Yet Another Bracket Sequence 哈希
- 庆祝杭州移动电视诞生一周年
- boost::multiprecision模块complex128相关的测试程序
- mysql快捷创建数据库_mysql数据库快速入门(1)
- lambda表达式java_Lambda表达式Java教程
- php页面底部信息居中,css底部如何局中?css三种居中方法
- GARFIELD@10-16-2004
- Lesson 2 Gradient Desent
- 一些在网上搜集的奇奇怪怪的bat代码。。。仅供参考!小心中招!
- C# OpenXml组件
- cas1584803-67-7|花菁染料齐岳试剂
- 如何正确关闭TCP连接
- java找不到文件_Java常见问题之javac Hello.java找不到文件的解决方法
- python取值范围到无穷大_python的特殊数字类型(无穷大、无穷小等)
- 炒美股-史考特证券开户流程
- 激光切割机的原理是什么?(激光切割机的结构是什么样的)
- laravel项目,解决Whoops, looks like something went wrong.
- win10java下载_win10 下JDK10的下载安装与环境变量配置
- vue 已知三角形的两边求斜边长度以及角度,如图
热门文章
- C++ class实现二叉树(完整代码,附非递归遍历)
- C++ using namespace 命名空间的定义与使用
- 合并k个有序链表 python_leetcode第23题-合并K个有序链表
- word List 43
- 用信号量解决进程的同步与互斥
- 思维--找规律--Codeforces Round #645 (Div. 2) c题
- CF364B. Free Market
- Max Sum Plus Plus HDU - 1024
- 动态区间第k小:树状数组套权值线段树
- 模板:割点、桥与双连通