【发布时间】:2013-05-18 02:52:41
【问题描述】:
对于文件存储库,我需要选择能够合理确保文件完整性的散列算法。
我需要一种算法,任何人(稍加努力)都可以轻松使用它来验证给定哈希的完整性。简而言之,文件可能会与哈希一起传输给用户,他们必须能够验证哈希是否来自文件。
我的首选是 MD5,因为似乎有广泛可用的实用程序来验证 MD5 哈希,但我担心 MD5 算法被密码破解(参考 Wikipedia/US-CERT:http://en.wikipedia.org/wiki/MD5)
我的第二个选择是 SHA-2 算法,但我担心可以轻松验证哈希的实用程序的可用性。我发现的大多数示例都显示了评估哈希的程序代码,但我发现很少(如果有的话)预先构建的实用程序(要求用户构建自己的实用程序超出了“轻松”范围)
还有哪些其他选项可用于生成和评估文件哈希,或者这两个选项是最好的?
【问题讨论】:
-
在这种情况下,第二个原像似乎是相关的攻击。没有已知的方法可以有效地找到 MD5 的第二个原图像。
-
@CodesInChaos 定义有效。如果它可以低效地完成,那还不是一个问题。
-
@weston 在这种情况下,它是 >2^120 MD5 调用,即完全不可行。
-
第二次原像攻击已经完成。由于该算法的固有弱点,您不能再依赖需要其理论最大值的 MD5。这就是人们说 MD5 被加密“破解”时的意思。 th.informatik.uni-mannheim.de/people/lucks/HashCollisions 这些攻击依赖于能够用任意数据填充其损坏的数据以强制发生冲突。
-
@CodesInChaos 请解释“在这种情况下,它是 >2^120”,您从问题中得出的信息是什么?