为什么解密MD5校验和这么容易

时间:2018-11-24 09:19:04

标签: md5

最近,我一直在寻找一个将MD5转换为纯文本格式的网站。为什么解密起来这么容易?

以这个例子

8466fa8e428bf83c4d2d9893b4bada64

7d53cbd3f0c0e2af31c3ba1eab940f22

dc647eb65e6711e155375218212b3964

27d4cf7da57f6748f79254f7be42cca3

909cea0c97058cfe2e3ea8d675cb08e1

在不到1秒的时间内解密为“我的Gmail密码为橙色”。 Picture

即使使用sha256,它也立即被解密 Picture

2 个答案:

答案 0 :(得分:3)

由于md5不是一种加密机制,因此它是一种非常古老的单向哈希算法。您发现的是碰撞,它们极不可能是原始输入。他们产生了 a 个可能的比赛。考虑

$ echo "My Gmail Password Is Orange" | md5sum
97ec87f89796b683feae88008c302d22  -
$ echo -n "My Gmail Password Is Orange" | md5sum
52b4551c065189631be8b506eee9b62e  -

这两个String之间的唯一区别是换行符。 md5损坏确​​实是这样。但这不是可逆的,除非您考虑使用非常短的单词和字典。

答案 1 :(得分:3)

md5 是一种单向摘要函数,也称为哈希函数。这不是一种加密机制。

已知

md5 有几个弱点,并且十年来普遍的建议是避免使用它。

在此特定站点上,您可能会看到一个彩虹表示例,用于查找冲突,甚至可能是原始输入。 Rainbow表通过预先计算大量可能的输入(例如,已知密码,多种语言的整个词典,常见单词组合等)来工作。这样的表可以有效地搜索给定的哈希,以找到产生所述哈希的输入。

请注意,在某些情况下,彩虹表可能会收到与输入结果不同的结果。在这种情况下,它也是碰撞的一个例子。

可以通过盐析来防止彩虹攻击,因为盐析会向每个输入添加随机数据,因此预先计算的彩虹表不太可能包含您的确切输入。

尽管 md5 被认为是损坏的,但在给定哈希值的情况下,您可以执行直接的“解密”-大多数攻击都尝试产生冲突而不是查找原像。

>

对于任何对安全敏感的应用程序,您应该考虑使用现代的哈希函数,例如 sha256 。对于密码哈希,请考虑使用专门为密码哈希设计的哈希函数,例如 bcrypt