【发布时间】:2011-02-16 07:59:07
【问题描述】:
我对@987654321@ 使用 MD5 哈希。这里没有攻击者,所以我不在乎 MD5 是否已被破坏并且可以故意产生冲突。
我的问题是我需要提供日志记录,以便更容易诊断不同的问题。如果我将每个哈希记录为一个太长、不方便且看起来很难看的十六进制字符串,那么我想缩短哈希字符串。
现在我知道只取 GUID is a very bad idea 的一小部分 - GUID 被设计为唯一的,但其中一部分不是。
对于 MD5 是否也是如此 - 我可以说 MD5 的前 4 个字节,并假设由于与原始哈希相比字节数减少,我只会获得更高的冲突概率吗?
【问题讨论】:
-
我想知道获取前 4 个字节是否比使用 md5 哈希的 CRC32 更好。
-
是的,因为MD5的前32位应该是完全随机分布的,所以不能改进分布。
-
@Nick D:是的,因为我已经有了那个 MD5 并且它正在控制我的程序流程,而 CRC32 将与它完全无关。
-
sharptooth:我的意思是统计上更好。安德烈亚斯是对的。 CRC32 毫无意义,因为 MD5 旨在在整个 2^128 位范围内具有良好的随机分布。
标签: language-agnostic md5 hash