language-agnostic - 我可以使用MD5哈希的一部分进行数据识别吗?

标签 language-agnostic md5 hash

我将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/

相关文章:

math - float 学坏了吗?

java - 当你说 "This language runs on JVM"时,它到底是什么意思?

language-agnostic - 为功率计生成红色和绿色之间的颜色?

algorithm - 加密后的MD5会变吗?

php - joomla密码加密

Ruby - 告诉用户一天中的哪个阶段和一年中的哪个季节(使用哈希)

java - 各种类型文件的哈希值

language-agnostic - 复制构造函数/运算符/函数是否需要明确它实现的复制变体?

c - 如何将字符串传递给这个 MD5 程序?

javascript - 使用 Javascript 根据 URL 哈希设置所选选项