md5破解方法(md5逆向破解技巧)

你知道的越多,不知道的就越多,业余的像一棵小草!

你来,我们一起精进!你不来,我和你的竞争对手一起精进!

其中有些网友表示,这题我会。

“如果它被破解了,我 35 岁之后就有事干了”

“如果可逆了,全宇宙最强的压缩算法就诞生了,任意字节数据都可以压缩到128bits”

“根据摘要就能把论文全文推导出来,碉堡了”

群消息刷了很多,都在带薪摸鱼,却没人讨论,具体怎么破解。所以,今天我就来献丑一下,浅谈一下 MD5 怎么样“破解”,大家轻喷!

逆向是不可能逆向的

暴力碰撞:穷举法&字典法

小标题上写了两种方法:穷举法和字典法。但是我认为它们的本质是一样的,都是利用计算机的资源尝试碰撞已知的 MD5 码。这里就放在一起了。

穷举法非常简单,就是不停地尝试各种字符的排列组合,看哪一个组合的 MD5 码能对上。可惜缺点是太耗费时间了。我们举个栗子,假设我们要破解一个 6 位大小写字母和数字混合的密码,那么一共有

md5破解方法(md5逆向破解技巧) 种组合。这个数的大小超过 500 亿。

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

字典法体现了算法设计的“以空间换时间”的思想。「缺点是比较耗费空间。不过现在硬盘的价格变得白菜价了,空间开销不算什么。」

所以,简单且常见的密码,如果用了 MD5 加密,会被暴力的很快。况且现在量子计算机要来了,等量子计算机发展到和我们现在的普通笔记本大小,MD5 被暴力的就更快了,说不定就是分分钟的事。

给大家推荐一个用字典法破解 MD5 的网站:https://www.cmd5.com/password.aspx

时间和空间的折中:哈希链表&彩虹表法

要构造这样的链表,我们需要两个函数:哈希函数 H(x)和衰减函数(reduction function)R(x)。哈希函数可以是 MD5,也可以是其他的消息摘要算法。H(x) 的值域是 R(x) 的定义域,R(x) 的值域是 H(x)的定义域。「R(x)不是H(x)的反函数。」

??

abcabc->H(x)->3C8B0D7A->R(x)->eopmca->H(x)->7E9F216C->R(x)->rapper

??

「如果在生成哈希链表的时候依次使用多个不一样的 R(x),此时的哈希链表就是“彩虹表”。」

文字描述起来太过复杂,还是用图列举一个 demo。

彩虹表法

这里再给大家推荐一个已经计算好的彩虹表:http://project-rainbowcrack.com/table.htm

差分攻击

上面介绍的穷举法、字典法和彩虹表法都是暴力破解,适用于任何的消息摘要算法。真正意义上 MD5 算法的破解,是 2004 年山东大学王小云教授提出的 MD5 碰撞方法。她所用到的方法正是差分攻击。

后记

其实还有一种破解 MD5 的方法——长度扩展攻击。不过这种方法是在一定条件下(破解加盐之后产生的 MD5 码)才能用的。这种方法由 MD5 分块计算的特性而来。

如果,我是说如果。你能逆转破解成功,你一定会获得图灵等计算机大奖。大大的解放数据存储能力,任何数据都可以用一段字符串表示。

发表评论

登录后才能评论