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

Har*_*han 12 md5

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

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

Joh*_*ica 25

这个问题类似于所谓的"生日悖论".

在概率论中,生日问题生日悖论涉及在一组n个随机选择的人中,他们中的某些人将拥有相同生日的概率.根据鸽子原则,当人数达到367时,概率达到100%(因为有366个可能的生日,包括2月29日).然而,只有57人达到99%的可能性,23人有50%的可能性.这些结论是基于这样的假设:一年中的每一天(2月29日除外)同样可能是生日.

这个问题背后的数学导致了一种众所周知的加密攻击,称为生日攻击,它使用这种概率模型来降低破解哈希函数的复杂性.

根据维基百科的文章,当从d = 2 128个数字的空间中选择n = 2 32个随机数时发生碰撞的可能性大约为:

广义生日问题数学

如果你计算出这个计算机会大概是2.7×10 -20.这是一个非常小的概率,但请注意它比您提出的计算高9个数量级.

  • 这就是假设md5算法具有完美均匀的哈希值.既然没有,你碰撞的几率就更大了. (9认同)