我想创建一个包含大量文件的校验和的数据库,并且我担心校验和 - collissions(具有相同校验和的两个不同文件)。可升级的摘要/校验和算法
问题1:两个不同文件具有相同MD5和的概率是多少?
作为一种解决方法,我想过使用日益增加的校验和。从一个小的校验和开始,如果发生冲突,计算一个更大的校验和,这个校验和可以派生到较小的校验和,所以我不必重新计算数据库中已有的所有文件的校验和......我仍然想要能够搜索更小尺寸的校验和。
问题2:哪种校验/摘要算法可以做到这一点?我需要一个校验和算法,它可以计算一定大小的值和“向后”兼容(较小的大小)。 IE浏览器。 file1有一个2字节的校验和0x1234和一个4字节的校验和0x12345678,2字节的校验和可以从4字节校验和派生。
谢谢你的广泛的答案,但我不知道它是否完全回答我的问题。 。你是否确定有2^64档案的.5甚至是“生日悖论”的机会?与SHA-256重复的机会是什么? – meeuw
@meeuw:对于2^64,它不完全是0.5,但是在2^64的数量级左右有一些文件,为0.5。由于SHA-256是256位散列,因此在得到至少一次碰撞的0.5次机会之前,您需要采用2^128个文件的顺序,散列分布均匀。 –