【发布时间】:2012-07-13 14:17:45
【问题描述】:
我们正在努力解决我们开发团队的内部争论:
我们正在寻找一个 64 位 PHP 哈希函数。我们找到了PHP implementation of MurmurHash3,但 MurmurHash3 是 32 位或 128 位,而不是 64 位。
同事 #1 认为,要从 MurmurHash3 生成 64 位散列,我们可以简单地对 128 位散列的第一个(或最后一个,或任何一个)64 位进行切片,并且它将是防冲突的作为原生 64 位哈希函数。
同事 #2 认为,我们必须找到一个原生 64 位散列函数来减少冲突,并且 128 位散列的 64 位切片不会像原生 64 位散列那样防冲突。
谁是对的?
如果我们采用 SHA1 等加密哈希的第一个(或最后一个,或任何一个)64 位而不是 Murmur3,答案是否会改变?
【问题讨论】:
-
目标是什么?是加密的吗?如果是这样,就没有真正安全的 64 位散列函数。
-
把这个问题移到crypto.SE不是更好吗?
-
-
@dystroy 可能,但不幸的是,这里不一定是获得所需专业知识的答案的地方。
-
目标是一个简单的哈希,而不是加密。我不知道crypto.SE,但如果这是解决此类问题的更好地方,我愿意将其发布到那里。
标签: hash cryptography sha1 murmurhash