SHA1冲突的可能性

eas*_*fri 68 hash sha1 probability

给定一组100个相同长度的不同字符串,如何量化字符串的SHA1摘要冲突不太可能的概率?

Pet*_*ter 144

替代文字

SHA-1生成的160位哈希值是否足够大以确保每个块的指纹是唯一的?假设具有均匀分布的随机散列值,n个不同数据块的集合和生成b位的散列函数,将存在一个或多个冲突的概率p受到块对的数量乘以该概率的概率的限制.给定的一对会发生碰撞.

(来源:http://bitcache.org/faq/hash-collision-probabilities)

  • 总之,碰撞的可能性大约为10 ^ -45.这非常非常*不太可能. (12认同)
  • @Djarid重要的是不要混淆意外哈希碰撞和对抗性碰撞.前者是两个项目的散列将碰撞的概率,并且遵循上面的公式(尽管如Kamel所指出的,分布不是完全均匀的,因此概率可能更高).后者用于故意尝试发现冲突,并依赖于发现和利用哈希中的弱点.密码哈希试图对这种攻击具有强大的功能,但是对于更简单的哈希应用程序(不传输秘密)而言,它们通常都是过度的. (5认同)
  • 但是SHA-1不是均匀分布,它可能比这个上限更大.我怀疑这个等式是不正确的.至少是EQUAL. (4认同)
  • 这个答案没有考虑到中国在 2005 年的发现,他们能够在 2^69 次迭代中产生碰撞,而不是暴力预测的 2^80 https://www.schneier.com/blog/archives/2005 /02/sha1_broken.html (2认同)

sha*_*oth 6

这就是生日问题- 这篇文章提供了很好的近似值,可以很容易地估计概率。实际概率将非常非常低 - 请参阅此问题的示例。


Ant*_*lls 6

那么,碰撞的可能性是:

1 - ((2^160 - 1) / 2^160) * ((2^160 - 2) / 2^160) * ... * ((2^160 - 99) / 2^160)

想想10个空间中2个项目发生碰撞的概率.第一个项目是唯一的,概率为100%.第二个是唯一的,概率为9/10.因此两者都是唯一100% * 90%的概率是,并且碰撞的概率是:

1 - (100% * 90%), or 1 - ((10 - 0) / 10) * ((10 - 1) / 10), or 1 - ((10 - 1) / 10)

这不太可能.你必须有更多的字符串才能成为一个遥远的可能性.

请查看维基百科此页面上的表格; 只在行之间插入128位和256位.