【发布时间】:2010-11-22 07:42:54
【问题描述】:
给定两条不同的消息,A 和 B(可能是 20-80 个字符的文本,如果大小很重要的话),A 的 MD5 摘要与 B 的 MD5 摘要相同的概率是多少和 A 的 SHA1 摘要与 B 的 SHA1 摘要相同?那就是:
(MD5(A) == MD5(B)) && (SHA1(A) == SHA1(B))
假设没有恶意,即选择消息的目的不是为了发现冲突。我只是想知道这种情况自然发生的几率。
我认为机会“非常低”,但我不确定如何验证这一点。
更多信息:可能的消息池的大小受到限制,但很大(数亿)。生日悖论正是我所担心的。
【问题讨论】:
-
这个问题真的没有意义。 SHA-1 比 MD5 强,所以任何碰撞的概率对于 SHA-1 来说都更低....
-
@Mitch 并且对于给定消息两者发生冲突的概率小于任何一个发生冲突的概率。
-
我认为他的观点是 OP 使用两者的原因是为了进一步减少碰撞的机会 - 如果在 MD5 中发生碰撞,希望不会与SHA-1 的不同算法。不必太吝啬。
-
如果目标是减少冲突的机会,只需使用生成更大摘要的散列系统即可。像 SHA-256、SHA-384 或 SHA-512。
-
@fantius 问题可能是(取决于应用程序)SHA-256、SHA-384、SHA-512 1) 计算时间更长,2) 生成的哈希比串联占用更多空间MD5 和 SHA-1,和/或 3) 部署的系统具有 MD5 和 SHA-1 的硬件,但没有其他硬件。这是一个非常有效的问题。
标签: math md5 sha1 digest hash-collision