我们为每个二进制资产生成一个 MD5 哈希值。这用于检查某个二进制资产是否已在我们的应用程序中。但是两个不同的二进制资产是否有可能生成相同的 MD5 哈希值。那么两个不同的字符串有可能生成相同的 MD5 哈希值吗?
对于一套甚至数十亿的资产来说,随机碰撞的可能性小到可以忽略不计——没什么你应该担心的。考虑到生日悖论,给定一组 2^64(或 18,446,744,073,709,551,616)资产,概率a single该集合内的 MD5 冲突为 50%。按照这种规模,您可能会在存储容量方面击败 Google。
然而,由于 MD5 哈希函数已被破坏(它很容易受到碰撞攻击), any 坚定的攻击者可以产生 2 个冲突资产几秒钟内即可消耗 CPU 功率。因此,如果您想使用 MD5,请确保此类攻击者不会损害您应用程序的安全!
另外,请考虑以下后果:攻击者可能会伪造与现有资产的冲突在你的数据库中。虽然没有此类已知的攻击(原像攻击)针对 MD5(截至 2011 年),通过扩展当前对碰撞攻击的研究,这可能成为可能。
如果这些结果成为问题,我建议查看 SHA-2 系列哈希函数(SHA-256、SHA-384 和 SHA-512)。缺点是它的速度稍慢并且哈希输出更长。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)