【发布时间】:2013-09-12 06:37:07
【问题描述】:
我正在编写一个以文件名为键的磁盘缓存。密钥可以长于最大文件名长度,因此需要对其进行哈希处理。有哪些碰撞概率极低的快速哈希函数(这样我可以忽略它)?
基本上,我正在寻找一种更快的 MD5 替代方案,并且没有安全要求。
(平台 = Android,语言 = Java。)
【问题讨论】:
-
1) 为什么一定要快? 2)你不能忽略碰撞。 3) 生日悖论
-
您使用的是哪种编程语言?它没有哈希表吗?你觉得使用它的hash函数来使用文件名作为key有问题吗?
-
@wildplasser 1) 越快越好 2) 如果不太可能,我可以
-
@wildplasser 32 位哈希仍然具有不可忽视的冲突可能性。我的缓存当前使用 MD5 并假设永远不会发生冲突。所以我基本上是在寻找更快且不一定安全的 MD5。
-
xxHash 的内部状态为 128 位,与 MD5 大小相同。它目前将它们合并以创建最终的 32 位散列,但将最后一步更改为创建 64 位散列或 128 位散列并不难。 128 位可能是您正在寻找的:即使有数十亿个文件,冲突的可能性也可以忽略不计。