什么是128位md5的不同文件数的冲突率,如1000万或5000万?

时间:2013-05-20 09:44:33

标签: c++ algorithm hash md5

我想使用文件'md5作为存储mp3文件的密钥,但我担心不同的文件有相同的md5。所以我想知道128bit md5在不同文件数上的冲突率是多少,例如1000万或5000万?是否有任何工具或公式可以直接计算出费率?

1 个答案:

答案 0 :(得分:0)

假设MD5是完美的。

对于5000万个文件,有50​​000000 x 49999999/2个可能的冲突[每个文件与另一个文件相对]。

这是2499999950000000。

有2 ^ 128 = 3.4028236692093846346337460743177e + 38个可能的md5哈希值。

因此50million文件有2499999950000000/2 * 3.4028236692093846346337460743177e + 38 = 3.6e-24碰撞的机会[大约]。

这意味着有0.000000000000000000000036%的碰撞机会。

这与'never'几乎相同

现在已知MD5 NOT 是完美的,并且它是可攻击的。但是,对于普通文件(即没有特别生成的问题),可以这样认为。

因此,如果用户控制上传的文件并可以攻击系统,那么你应该使用SHA2或更好,如果这里没有问题,md5就完全可以。