我有数百万条数据记录,每条记录的大小约为2MB。这些数据中的每一个都存储在一个文件中,并且还有一组与该记录相关的其他数据(存储在数据库中)。
当我的程序运行时,我将在内存中显示其中一个数据记录,并需要生成相关数据。为此,我想要获取内存的MD5,然后使用此哈希作为数据库的密钥。该密钥将帮助我找到其他数据。
我需要知道的是,如果数据内容的MD5哈希是一种合适的方式来识别2MB数据,这意味着我可以使用MD5哈希而不必过多担心冲突吗?
我意识到碰撞有可能,我关心的是数百万条2MB数据记录碰撞的可能性有多大?碰撞是否可能发生?与硬盘故障或其他计算机故障相比时呢? MD5可以使用多少数据来安全识别?数百万GB文件呢?
我并不担心恶意或数据篡改。我得到了保护,以至于我不会收到被操纵的数据。
答案 0 :(得分:3)
这归结为所谓的Birthday paradox。该维基百科页面具有用于评估碰撞概率的简化公式。这将是一个非常小的数字。
接下来的问题是如何处理10 -12 碰撞概率 - 见this very similar question。