MD5 解密。它们是如何做到的?

10

我曾认为解密MD5哈希是不可能的,但我发现了一些工具可以在 这里 解密。但我不知道它们是如何在如此短的时间内(大约1秒)完成的。

请帮助我理解这个过程。

谢谢。


4
网站上已经说明了:“该工具会搜索多个数据库以查找MD5哈希的未编码版本。” - 基本思想是:许多人将随机的MD5哈希添加到数据库中,当您输入哈希时,您只需进行反向查找即可。与解码无关。 - poke
1
为什么很难想象呢?磁盘空间很便宜。在MySQL中(假设键小于255字节),每行只有大约40到300字节。然后,您需要编写一个解析字典并添加每个单词的md5的脚本... - ircmaxell
1
即使对常见单词的MD5哈希进行谷歌搜索也可以得到良好的结果。 - Alex Jasmin
要明确一点:您正在查找可能的原始字符串,而不是必须是“原始”字符串,因为您可以从中开始的可能字符串比可能的MD5哈希值要大得多。 - Nanne
6个回答

20

它不会解码MD5哈希。它使用所谓的彩虹表...这就是为什么使用盐哈希而不是直接存储哈希值非常重要的原因...


2
盐值哈希仍然可以被破解。 - rook
从技术上讲,彩虹表根本不适用于这种情况,因为可以哈希的字符串数量是无限的。该网站只是使用了一个“常见”哈希值的数据库。彩虹表!=数据库查找。 - Charles
1
@Charles,我没有看到网站描述他们确切的数据库架构的地方,所以我不清楚为什么你得出了没有彩虹表的结论。 - Matthew Flaschen
当然,加盐哈希仍然有被破解的可能性。但它比未加盐哈希难多了,因为你需要同时知道盐和为该盐生成一张表... - ircmaxell

4

由于MD5是单向算法,因此无法解码MD5哈希值。他们会有一个预先计算好的哈希值数据库以及用于生成哈希值的字符串,并进行查找。


3
网页实际上包含了答案:
数据库包含数百万个MD5哈希及其解密形式。
如果你对一些琐碎的字符串(例如“Hello World”)进行哈希,那么它很可能存在于该数据库中。但如果输入一些奇怪的文本,比如“H3ll0 Wh1rrl3d!?!”,那么“转换”将失败,因为它不会存在于哈希数据库中。(尽管我的“奇怪”字符串似乎正在被解码?!)
重要提示:
任何经过MD5哈希的数据都将存储以供查找。请勿使用此表单对敏感数据进行编码。
哈哈。这就是为什么你用该网站哈希的任何东西都会被解码!每次你在该网站上哈希某些东西,都会增加数据库的大小和能力!

2

它清楚地表示:此工具在多个数据库中搜索MD5哈希的未编码版本


0
一般来说,这仍然是计算上难以处理的。但是,彩虹表有助于定位已知的预映像。它只能在预映像基于常见字符串(例如字典单词)且未使用盐时才有效。这就是他们所说的“此工具搜索多个数据库”的含义。

0

虽然可以说彩虹表无法破解长字符串,但是有大量GPU的人可以在合理的时间和金钱范围内使用暴力破解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接