我将MD5哈希用于identifying files with unknown origin。这里没有攻击者,因此我不在乎MD5是否已损坏并且可以故意产生冲突。
我的问题是我需要提供日志记录,以便更容易地诊断出不同的问题。如果我将每个哈希记录为一个太长,不便且看起来很丑陋的十六进制字符串,那么我想缩短哈希字符串。
现在,我知道只占GUID的一小部分is a very bad idea-GUID被设计为唯一的,但其中一部分不是唯一的。
MD5是否相同-我可以说MD5的前4个字节,并假设由于与原始哈希相比减少的字节数,我得到的冲突概率更高吗?
最佳答案
简短的答案是肯定的,您可以使用前4个字节作为ID。提防生日悖论:
http://en.wikipedia.org/wiki/Birthday_paradox
随着您添加更多文件,发生碰撞的风险迅速增加。有了50.000,您大约有25%的机会会发生ID冲突。
编辑:好吧,只需阅读指向其他问题的链接,当包含100.000个文件时,发生碰撞的几率大约为70%。
关于language-agnostic - 我可以使用MD5哈希的一部分进行数据识别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780145/