SHA1碰撞的概率

给定一组长度相等的100个不同的string,如何量化string的SHA1摘要碰撞不太可能的概率?

替代文字

SHA-1生成的160位散列值是否足够大,以确保每个块的指纹都是唯一的? 假设具有均匀分布的随机散列值,n个不同数据块的集合和产生b个比特的散列函数,将存在一个或多个冲突的概率p由块对的数目乘以给定的一对将会相撞。

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

那么碰撞的概率是1((2 ^ 160-1)/ 2 ^ 160)*((2 ^ 160-2)/ 2 ^ 160)* … *((2 ^ 160 – 99 )/ 2 ^ 160)。

考虑10个空间中的两个项目相撞的概率。第一个项目是唯一的,概率为100%。 第二个以9/10的概率是唯一的。 所以两者唯一的概率是100%* 90%,碰撞的概率是1 – (100%* 90%)或1 – ((10-0)/ 10)*((10-1) / 10)或1 – ((10-1)/ 10)。

这是不太可能的。 你将不得不有更多的string,因为它是一个遥远的可能性。

看看维基百科上这个页面上的表格; 只需插入128位和256位的行之间。

这是生日问题 – 文章提供了很好的近似值,可以很容易地估计概率。 实际可能性将会非常非常低 – 以此问题为例。