【发布时间】:2019-02-17 04:17:10
【问题描述】:
查看使用接受字符串并返回 64 位有符号整数值的散列算法。
它不必在密码学上是健全的,只需提供适当的冲突率即可用作分布式存储的密钥。
我在看杂音哈希that seems to fit the bill
很好奇它的属性与采用 MD5 哈希之类的前 64 位相比如何。
【问题讨论】:
-
可能大致相同(即,在散列字符串的数量接近 2^32 之前,意外碰撞的概率很小)。但我实际上没有可以参考的学术论文来支持这一点,只是 AFAIK 截断的 MD5 和 Murmur 3 的分布都相当好。
-
Murmur 可能会更快,并且对于哈希表的目的同样有效。
-
java7 可以在
HashMap中为String使用 Murmur 哈希码。它有 2 个 hashCode 函数,一个是文档,一个是hashCode()和 murmur -hash32(),它是包私有和缓存的,就像普通的hashCode()一样。记住那个 impl。不像常规的 hashCode() 是不稳定的