查看使用接受字符串并返回 64 位带符号整数值的哈希算法。
它不必在密码学上是可靠的,只要提供一个合适的冲突率就可以用作分布式存储的 key 。
我在看 murmur hash that seems to fit the bill
很好奇这种方法的属性与采用 MD5 哈希之类的前 64 位相比如何。
最佳答案
安全散列——即使是像 MD5 这样理论上“损坏”的散列——表现出与随机性无法区分的分布(否则它们将不安全)。因此,它们尽可能接近完美。
与所有通用哈希函数一样,murmurhash 以正确性换取速度。虽然它对大多数输入显示出非常好的分布特征,但它有自己的病态案例,例如 documented here。 ,其中重复的 4 字节序列导致冲突的频率高于预期。
简而言之:使用安全哈希函数永远不会更糟,有时甚至比使用通用哈希函数更好。但是,它也会慢得多。
关于java - 如果您想要 64 位 int,那么来自 murmurhash 或从 MD5 哈希中获取 64 位的冲突会更少吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324229/