java - 如果您想要 64 位 int,那么来自 murmurhash 或从 MD5 哈希中获取 64 位的冲突会更少吗?

标签 java algorithm hash

查看使用接受字符串并返回 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/

相关文章:

Python - 一次性ifs

python - 在 Python 3 中,frozenset 子类的实例应该是可哈希的吗?

string - BobJenkinsHash 函数的结果可以为负数吗?

batch-file - 在 BATCH 中使用 HASH SHA1 比较两个文件夹中的文件

java - Mockito:以不同的方法覆盖模拟值

java - 使用套接字时 'end of stream' 是什么意思

c++ - 我是否必须使用 std::shared_ptr 删除对对象的所有引用

java - 将列表划分为组的算法

java - 嵌套 for 循环。为什么内部变量值会重置?

java - 错误 : 'Namespace for prefix ' xsi' has not been declared. '