我能够使用MD5唯一标识多少数据(以MB为单位)?

3
我有数百万条数据记录,每个记录大小约为2MB。这些数据都存储在文件中,并且与该记录相关的一组其他数据存储在数据库中。
当我的程序运行时,我将在内存中呈现其中一个数据记录,并需要生成相关的数据。为此,我想对内存进行MD5处理,然后使用此哈希作为关键字进入数据库。该关键字将帮助我定位其他数据。
我需要知道的是,数据内容的MD5哈希是否是唯一标识2MB数据的合适方式,也就是说,我可以使用MD5哈希而不必过多担心碰撞吗?
我意识到存在碰撞的可能性,我的问题是,在数百万个2MB数据记录中发生碰撞的可能性有多大?碰撞是常见事件吗?与硬盘故障或其他计算机故障相比如何?MD5可以用于安全地识别多少数据?例如数百万GB的文件?
我不担心恶意或数据篡改。我已经采取了保护措施,以确保我不会收到被篡改的数据。
1个回答

3
这归结为所谓的生日悖论。该维基百科页面提供了简化的公式来评估碰撞概率,结果将非常小。
下一个问题是如何处理例如10-12的碰撞概率-请参见这个非常相似的问题

仅仅是一年有2^128天。 - Gumbo
维基百科称:“10^18到10^15是典型硬盘的不可纠正位错误率[2]。理论上,MD5,128位,应该在大约8200亿个文档内保持在该范围内。” - Julius Musseau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接