uris的高效哈希函数

时间:2011-01-16 10:41:31

标签: hash collision

我正在寻找一个哈希函数来构建(全局)固定大小的id 字符串,其中大多数是URI。

它应该是:

  • 碰撞机会低
  • ~64bit
  • 如果可能的话,利用uri的结构?

http://murmurhash.googlepages.com/会是一个不错的选择,还是有更适合的选择?

2 个答案:

答案 0 :(得分:2)

试试MD4。就加密而言,它是“破碎的”,但由于你没有任何安全问题(你想要一个64位的输出大小,这太小而不能产生任何不错的安全性来防止碰撞),那不应该是问题。 MD4产生一个128位的值,你只需要截断到你想要的大小。

加密哈希函数旨在恢复构建冲突的显式尝试。可以想象,人们可以通过放松这种条件来建立更快的功能(与确定的攻击者相比,它更容易击败随机碰撞)。有一些这样的功能,例如murmur哈希。 然而可能需要一个非常具体的设置才能真正注意到速度差异。使用我的家用PC(2.4 GHz Core2),我可以使用单个CPU内核(我有四个内核)使用MD4每秒散布大约1000万个短字符串。对于MurmurHash以不可忽略的方式比MD4更快,它必须在每秒至少一百万次散列调用的上下文中使用。这种情况不会经常发生......

答案 1 :(得分:-1)

我等待一段时间让MurmurHash3最终确定,然后使用它。 128位版本应该为生日悖论提供足够的碰撞保护。