【问题标题】:What is the probability of md5 collision if I pass in 2^32 sets of string?如果我传入 2^32 组字符串,md5 冲突的概率是多少?
【发布时间】:2013-02-05 01:28:33
【问题描述】:

如果我传入 2^32 组字符串,md5 冲突的概率是多少?

我可以说答案只是 2^32/2^128 = 1/1.2621774e-29 因为 md5 哈希的位长度是 128?

【问题讨论】:

    标签: md5


    【解决方案1】:

    这个问题类似于所谓的"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 个数量级。

    【讨论】:

    • 这是假设 md5 算法具有完美均匀的散列分布。既然没有,你碰撞的机会就更大了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2011-11-27
    • 2010-12-24
    • 2020-10-21
    • 2017-09-01
    相关资源
    最近更新 更多