MD5的冲突率是多少?

39

MD5算法发生冲突的概率是多少?我认为这种概率极其低。

2个回答

47

如果您不试图故意创建碰撞,则需要对约2^64个值进行哈希,平均而言才能在它们之间获得单个碰撞。哈希碰撞与生日问题非常相似。

如果您查看两个任意值,则碰撞概率仅为2-128

MD5的问题在于相对容易制造出两个不同的文本,它们会哈希成相同的值。但这需要故意攻击,不会意外发生。即使进行有意攻击,目前也不可行于以给定哈希匹配纯文本。

简而言之,MD5在非安全性用途中是安全的,但在许多安全应用中是不安全的。


1
根据生日问题预测,2^(n/2)。 - CodesInChaos
根据这些信息,是否适合为包含数百万个文档的系统创建基于其各自内容的MD5哈希的文档ID?@CodesInChaos - SaidbakR
我更喜欢md5,因为它的性能比SHA256要快得多,不是吗?@CodesInChaos - SaidbakR
1
@sємsєм 它更快,但即使是 SHA-2 和 SHA-3 也可以在桌面 CPU 上处理几百 MB/s。如果这仍然不够好,您可以查看 Skein 或 Blake2,它们几乎与 MD5 一样快,同时仍然安全。| 或者,如果您可以使用秘密密钥,HMAC-MD5 仍然相对安全。 - CodesInChaos
@Albert “每X个文件就会有1次冲突”你不能这样说,因为概率随着文件数量的增加呈二次比例增长。 - CodesInChaos
显示剩余3条评论

7

它生成一个128位的值。因此,由于生日悖论,意外冲突率应为2-64


4
碰撞概率大约在2的64次方左右,但对于任意两个值来说,它们发生冲突的概率只有2的负128次方。 - CodesInChaos

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