Hash URI的高效哈希函数

Hash URI的高效哈希函数,hash,collision,Hash,Collision,我正在寻找一个散列函数来构建一个(全局)固定大小的id 字符串,其中大多数是URI 应该是: 快速 碰撞几率低 ~64位 如果可能的话,利用uri的结构 是个不错的选择,还是有更合适的呢?试试看。就密码学而言,它是“坏的”,但由于您没有任何安全顾虑(您想要的是64位输出大小,它太小,无法产生任何适当的冲突安全性),因此这应该不是一个问题。MD4生成一个128位的值,您只需将其截断为所需的大小 加密散列函数的设计目的是对构建冲突的显式尝试具有恢复能力。可以想象,可以通过放松该条件来构建更快的函

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

应该是:

  • 快速
  • 碰撞几率低
  • ~64位
  • 如果可能的话,利用uri的结构
是个不错的选择,还是有更合适的呢?

试试看。就密码学而言,它是“坏的”,但由于您没有任何安全顾虑(您想要的是64位输出大小,它太小,无法产生任何适当的冲突安全性),因此这应该不是一个问题。MD4生成一个128位的值,您只需将其截断为所需的大小

加密散列函数的设计目的是对构建冲突的显式尝试具有恢复能力。可以想象,可以通过放松该条件来构建更快的函数(比确定性攻击者更容易击败随机碰撞)。有一些这样的函数,例如杂音散列。然而,可能需要相当具体的设置才能真正注意到速度差。使用我的家用PC(2.4 GHz Core2),我可以使用一个CPU内核(我有四个内核),每秒使用MD4散列大约1000万个短字符串。为了以不可忽略的方式使杂音散列比MD4更快,它必须在每秒至少涉及一百万次散列调用的上下文中使用。这种情况并不经常发生…

试试看。就密码学而言,它是“坏的”,但由于您没有任何安全顾虑(您想要的是64位输出大小,它太小,无法产生任何适当的冲突安全性),因此这应该不是一个问题。MD4生成一个128位的值,您只需将其截断为所需的大小


加密散列函数的设计目的是对构建冲突的显式尝试具有恢复能力。可以想象,可以通过放松该条件来构建更快的函数(比确定性攻击者更容易击败随机碰撞)。有一些这样的函数,例如杂音散列。然而,可能需要相当具体的设置才能真正注意到速度差。使用我的家用PC(2.4 GHz Core2),我可以使用一个CPU内核(我有四个内核),每秒使用MD4散列大约1000万个短字符串。为了以不可忽略的方式使杂音散列比MD4更快,它必须在每秒至少涉及一百万次散列调用的上下文中使用。这种情况并不经常发生…

我会再等一段时间,等待第3版最终定稿,然后使用它。128位版本应该为您提供足够的碰撞保护,以防生日悖论。

我会再等一段时间,等待3号文件最终定稿,然后使用它。128位版本应该为您提供足够的碰撞保护,以防生日悖论。

我认为md4应该可以。我甚至可以多吃点。但我仍然想知道为URI优化哈希函数是否可能,是否有意义。我们的想法是,ie的顶级tld甚至域名都比最后的CHAR更为常见。实际上,我已经将MurringHash与SHA-1进行了基准测试,因此我可以向您保证,这一差异在实践中非常显著。对于许多短字符串来说,这尤其痛苦,因为SHA-1的安装成本非常高,但即使长字符串与I/O混合使用,差异也会很快累积起来。我认为md4应该可以。我甚至可以多吃点。但我仍然想知道为URI优化哈希函数是否可能,是否有意义。我们的想法是,ie的顶级tld甚至域名都比最后的CHAR更为常见。实际上,我已经将MurringHash与SHA-1进行了基准测试,因此我可以向您保证,这一差异在实践中非常显著。对于许多短字符串来说,这尤其痛苦,因为SHA-1的安装成本非常高,但即使长字符串与I/O混合使用,差异也会很快累积起来。