【发布时间】:2013-02-05 01:28:33
【问题描述】:
如果我传入 2^32 组字符串,md5 冲突的概率是多少?
我可以说答案只是 2^32/2^128 = 1/1.2621774e-29 因为 md5 哈希的位长度是 128?
【问题讨论】:
标签: md5
如果我传入 2^32 组字符串,md5 冲突的概率是多少?
我可以说答案只是 2^32/2^128 = 1/1.2621774e-29 因为 md5 哈希的位长度是 128?
【问题讨论】:
标签: md5
这个问题类似于所谓的"birthday paradox"。
在概率论中,生日问题或生日悖论涉及在一组 n 个随机选择的人中,一些人的概率他们中将有相同的生日。根据鸽巢原理,当人数达到 367 时,概率达到 100%(因为有 366 个可能的生日,包括 2 月 29 日)。然而,只有 57 人达到 99% 的概率,而 23 人达到 50% 的概率。这些结论是基于以下假设:一年中的每一天(2 月 29 日除外)生日的概率相同。
这个问题背后的数学导致了一种众所周知的密码攻击,称为birthday attack,它使用这种概率模型来降低破解哈希函数的复杂性。
根据维基百科的文章,从 d = 2 的空间中选择 n = 232 个随机数时发生冲突的可能性128 个数字大约是:
如果你work this calculation out 机会大约是 2.7×10-20。这是一个非常小的概率,但请注意它比您建议的计算高 9 个数量级。
【讨论】: