15 个字符的字母数字字符串的 MD5 碰撞概率

Collision probability on MD5 for 15 character alpha numeric strings

我正在生成 15 个字符的字母数字代码并将它们保存为 MD5 散列以进行保护。但是我不能有非唯一或冲突的哈希值,如果它们出现我不会插入它们。因为我有大量的代码,我将在应用程序的生命周期内插入数据库,并确保我的应用程序有更好的性能,我想确保碰撞本身的数量更少。

问题: 给定输入 space 36 提高到 15,发生碰撞的概率是多少? (36 因为我使用 26 个小写字母和 10 个数字,15 因为我用其中的 15 个生成代码)。

你可以参考这里首先了解我是如何生成代码的。

用法:要在优惠券代码中使用这些,我想对它们进行哈希处理以保护自己免受数据库泄露。

安全散列产生冲突任何冲突的机会可以忽略不计,即接近于零。 MD5 甚至是这样,它是一个 broken 安全散列。即使有非常大的哈希输入(想想 2^64),产生碰撞的机会仍然约为 1/(2^64)。

你的输入发生碰撞的可能性当然大很多(假设是随机生成的),因为36^15比2^128小很多,MD5的输出大小(36^15 < ( 2^6)^15 = 2^90 <<< 2^128)。所以输入值比散列值少。