MD5算法破解思路

article/2025/9/22 8:00:23

https://blog.csdn.net/wufaliang003/article/details/79794982
小明:老师,上次您讲了MD5算法。用它生成的信息摘要,真的可以被破解吗?

老师:有很多种方法可以破解,不过需要明确一点,这里所谓的破解,并非把摘要还原成原文。为什么呢?因为固定128位的摘要是有穷的,而原文数量是无穷的,每一个摘要都可以由若干个原文通过Hash得到。

小明:如果是这样的话,网上所说的MD5破解到底是怎么回事呢?

老师:对于MD5的破解,实际上都属于【碰撞】。比如原文A通过MD5可以生成摘要M,我们并不需要把X还原成A,只需要找到原文B,生成同样的摘要M即可。

设MD5的哈希函数是H(X),那么:

H(A) = M

H(B) = M

任意一个B即为破解结果。

B有可能等于A,也可能不等于A。

用一个形象的说法,A和B的MD5结果“殊途同归”。

MD5碰撞通常用于登陆密码的破解。应用系统的数据库中存储的用户密码通常都是原密码的MD5哈希值,每当用户登录时,验签过程如下:
在这里插入图片描述

如果我们得到了用户ABC的密码哈希值E10ADC3949BA59ABBE56E057F20F883E,并不需要还原出原密码123456,只需要“碰撞”出另一个原文654321(只是举例)即可。登录时,完全可以使用654321作为登陆密码,欺骗过应用系统的验签。
在这里插入图片描述

小明:那么,具体如何来实现MD5摘要的碰撞呢?

老师:MD5碰撞的方法有很多,主要包括暴力枚举法、字典法、彩虹表法等等。

暴力枚举法:

老师:暴力枚举法顾名思义,就是简单粗暴地枚举出所有原文,并计算出它们的哈希值,看看哪个哈希值和给定的信息摘要一致。这种方法虽然简单,但是时间复杂度极高。想象一下,仅仅长度8位的密码就有多少种排列组合的可能性?

小明:只考虑大小写字母和数字,每一位有62种可能,那么8位密码的排列组合就是62的8次方,218340105584800,约等于二百万亿!

老师:是的,这样的数据量如果使用普通的单机来破解,恐怕头发白了也破解不完。不过,我们也可以做一些取巧,优先尝试生日和有意义的单词,这样就可以把穷举范围缩小很多。

字典法:

老师:如果说暴力枚举法是ongoing时间换空间,那么字典法则是用空间换时间。黑客利用一个巨大的字典,存储尽可能多的原文和对应的哈希值。每次用给定的信息摘要查找字典,即可快速找到碰撞的结果。
在这里插入图片描述

不过,这样做虽然每次破解速度很快,但是生成字典需要巨大的空间。仍然以8位密码举例,需要多大空间呢?

小明:刚才计算过有218340105584800种可能性,每一对映射占192(128+64)bit。那么大约需要4.65PB的存储空间。

老师:没错,这样做的存储成本实在太大了。当然,我们同样可以取巧,优先存储那些常用的密码及其摘要。

小明:那么,有没有什么方法可以做到时间和空间的均衡呢?

老师:有一种方法可以,那就是下面我要介绍的【彩虹表发】。

彩虹表法:

老师:彩虹表法可以说是对字典法的优化,它采用了一种有趣的数据结构:【彩虹表】。在学习彩虹表之前,我们先来了解两个基本函数:H(X)和R(X)。

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次为止。

简单来说,哈希链表代表了一组映射关系,其中每组包含K对映射,但只需要存储链条首位两个字符串。假设K=10,那么存储空间只有全量字典的十分之一,代价则是破解一个摘要的运算次数也提高了十倍。这就是时间和空间的取舍。虽然做了取舍,但是哈希链条存在一个致命的缺陷:R(X)函数的可靠性。虽然我们尽量把R(X)设计成结果均匀分布的函数,但是再完美的函数也难免会有碰撞的情况,比如下面这样:

给定信息摘要:FB107E70

经过多次R(X),H(X)运算,得到结果kiebgt

通过哈希表查找末端kiebgt,可以找出首端aaaaaa

但是,FB107E70并不在aaaaaa到kiebgt的哈希链条当中,这就是R(X)的碰撞造成的。
在这里插入图片描述

这个问题看似没什么影响,既然找不到就重新生成一组首尾映射即可。但是想象一下,当K值较大的时候,哈希链很长,一旦两条不同的哈希链在某个节点出现碰撞,后面所有的明文和哈希值全都变成了一毛一样的值。

这样造成的后果就是冗余存储。原本两条哈希链可以存储 2K个映射,由于重复,真正存储的映射数量不足2K。

这个时候,我们设计了彩虹表。彩虹表对哈希链进行了改进,把原先的R(X)的函数改进成从R1(X)到Rk(X)一共K个衰减函数。这样一来虽然也可能发生碰撞,但是碰撞只会发生在同一级运算,如R1和R1碰撞,R3和R3碰撞,大大减小了存储重复的几率。
在这里插入图片描述

小明:好复杂,听的头都晕了。那想要破解MD5算法,有没有比彩虹表更厉害的方法呢?

老师:还真有。

2004年,王小云教授提出了非常高效的MD5碰撞方法。

2009年,冯登国、谢涛利用差分攻击,将MD5的碰撞算法复杂度进一步降低。

有兴趣的小伙伴可以通过资料进行更深入的学习。

几点补充:

对于单机来说,暴力枚举法的时间成本很高,字典法的空间成本很高。但是利用分布式计算和分布式存储,仍然可以有效破解MD5算法。因此这两种方法同样被黑客们广泛使用。
————————————————
版权声明:本文为CSDN博主「HelloWorld搬运工」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wufaliang003/article/details/79794982


http://chatgpt.dhexx.cn/article/vXtCjtTR.shtml

相关文章

MD5密文破解实验

实验目的与要求 1、 了解MD5加密的基本原理 2、 使用MD5Crack工具进行MD5解密 3、 使用网络资源对密文进行在线破解 4、 认真阅读并掌握本实验相关的知识点 5、上机实现实验所提到的工具和操作,得到实验结果,并填写实验报告 预备知识 MD5介绍 199…

破解MD5加密

本文摘自漫画戏说:如何破解MD5加密算法TOMORROW星辰 前言 这里所谓的破解并非是要把摘要还原成原文。因为MD5算法是用有穷的128位表示无穷的原文。对于MD5的破解,实际上都属于碰撞,比如原文A可以 通过MD5生成摘要M,我们只要找到…

MD5摘要算法的几种破解方法!

你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 推荐:https://www.xttblog.com/?p5259 MD5 算法暴力…

比起高性能计算,高端存储才更亟待国产化

科技云报道原创。 上周末,2019全国高性能计算学术年会在内蒙古开幕,对于行业内的人来说,这是一个每年不能再熟悉的代表高性能领域的峰会了,CCF如今已经成为世界三大高性能计算学术年会之一。 ​ 值得注意的是,2019年的…

评测|HPE Nimble AF全闪存系列,诠释真正的高端存储

【IT168 评测】导语:随着AI、互联网、大数据等技术快速发展,企业对存储设备的需求已踏上一个更高的级别,高性能、低延时、大容量等多种需求的应用场景愈发常见,在这种情况下,寻求能够满足相应工作负载能力的存储设备已…

高端存储下一个爆款凭什么是它?

高端存储是企业级存储领域最令人淡定的市场,淡定在于这个市场门槛高,真正赢得了用户认可之后,基本上都可以淡定地稳步发展,但是想要取得绝对的优势,那还是需要下一番功夫不可。只是功夫非一日练成,更需耐力…

再获最佳推荐,华为高端存储凭什么征服DCIG?

近日,全球著名技术分析机构DCIG发布《DCIG 2023-24高端存储阵列TOP5》报告,华为OceanStor Dorado 18000凭借可靠性、易用性和安全性等诸多优势,在DELL EMC、IBM、HPE、PureStorage等一众国际厂商中脱颖而出,荣获最佳推荐榜首。 一…

【业界新闻】浪潮高端存储系统技术发展及展望(上篇)

转自:http://news.watchstor.com/corp-147547.htm [导读]从“9.11事件”之后大量的企业因为数据丢失而宣告破产可以看出数据的重要地位。随着计算机技术的发展,实现了数据计算和数据存储的分离,而数据存储由存储系统完成。存储系统的出现&…

HDS不玩了,高端存储还能玩多久?

据悉,“日立公司高级管理系统与服务业务副总裁Keiichi Shiotsuka的表述。他指出,日立公司正"着手冻结存储业务之内高端机型的投资,且在对低营收硬件开发业务进行结构化调整,旨在于2019年3月31日之前将系统与服务业务运营利润…

【观察】Hitachi Vantara:高端存储再“升级”,数字化转型再“升维”

我们知道,“数字经济”自2017年政府工作报告首次提及至今,已多次被写入政府工作报告,这也意味着数字经济已对中国的经济运行方式产生深远影响,成为经济发展中的核心主线。 同样,作为数字经济中的关键生产要素&#xff…

HDS VSP/VM高端存储更换硬盘

实施磁盘更换时,最好带上防静电手环 一、 故障描述 HDS VM存储有一块硬盘报红色灯 打开机框 拧开前面的螺丝,拉手往外啦,不行去后面推下 二、 SVP管理界面确认故障硬盘 管理口console,接网线,管理地址。将笔记本配置…

HDS VSP/VM高端存储更换电池

如果硬盘和电池都有问题先换硬盘 登录控制台点击Infomaiton 点击log 点击list 选择日志 点击content查看具体日志 查看日志提示电池生命到期 两个电池都到期都要换 开始更换电池 注意:先换一块电池,等换上去的电池充电到50%以上在换第二块电池 点击…

存储专栏:深度解读高端存储的快照技术

source: http://www.doit.com.cn/p/198128.html 存储专栏:深度解读高端存储的快照技术 2013-09-04 分类:企业IT 评论(0) 存储在线专栏文章:之前,西瓜哥已经介绍了所有的高端存储产品,包括EMC Symmetrix、HDS VSP、I…

高端存储未来之路在哪?VSP 5000系列带来新答案

VSP 5000系列--Hitachi Vantara新一代高端存储系统,然而它并没有沿袭过去产品命名的规律,“之所以用5000这个数字,是想表明它的确是一款具有突破性的产品。”Hitachi公司IT平台产品管理部副总裁Akinobu Shimada如是说。 高端存储&#xff0c…

高端存储“四十不惑”

古人云,四十不惑。 这四个字,现在形容高端存储最合适不过了。 为什么呢? 秉持初心,继往开来 谈高端存储,自然少不了Hitachi Vantara。 对于不太了解Hitachi Vantara的朋友,这里我多介绍两句&#xff0…

转型不忘初心,决定一个高端存储厂商的未来

全球企业级存储市场上排名前16强,其中有一半的厂商专业做存储,心无旁骛。 专业自然会更专心,专心致志往往意味着自己向前的路将变得狭窄了起来。 对于像综合性的企业级IT厂商来说,前面的路还是比较好走,毕竟可以为企…

SDS 2.0:能否让高端存储服“软”?

1990年,EMC Symmetrix 4200问世,标志着高端存储时代正式开启。 斗转星移,高端存储已走过三十余载:从最初5.25英寸硬盘到如今闪存、SCM等新介质,从最初只有4MB集成缓存到如今上动辄TB级的缓存,从最初直连架…

HDS 高端存储TC原理和配置总结

一. TC配置要求 1)P和S位于不同的存储 2)P和S要以block为单位大小相等 3)P和S都要求被Mapping 4)创建从P到S的路径 5)确认从S到P的路径并保留端口TC link的需求 A:存储映射到主机使用的端口(端口类型为:Target) B:TC配置需要的端口,根据2个存储的卷在TC中不同定位,端口…

重新定义高端存储架构,华为Dorado V6树立全闪存新标杆

企业级存储正在迎来它真正的全闪存时代。 由于闪存介质在成本上的不断下降,闪存容量的不断攀升,以及软件功能的不断完善,全闪存存储逐渐成为市场的主流。根据IDC的统计数据,全闪存存储的营收规模已经与传统基于机械硬盘和混合介质…

【观察】PowerMax:高端存储,中国制造

我们知道,随着存储市场的快速发展,高端存储在人们心中已不再是那么高高在上,遥不可及。但是,是否拥有强大的技术实力、市场和品牌的长期积累、能否经受得住各行各业不同应用的关键业务场景长时间考验和大量企业级客户的反复实践验…