【问题标题】:How much more likely are hash collisions if I hash a bunch of hashes?如果我散列一堆散列,散列冲突的可能性有多大?
【发布时间】:2009-11-10 08:48:22
【问题描述】:

假设我使用哈希来识别文件,所以我不需要它是安全的,我只需要尽量减少冲突。我在想我可以通过使用 SIMD 并行运行四个散列然后对最终结果进行散列来加速散列。如果哈希被设计为采用 512 位块,我只需单步执行文件,一次采用 4x512 位块并从中生成四个哈希;然后在文件的末尾,我将四个结果散列在一起。

我很确定这种方法会产生更差的哈希值...但是会差多少?有没有粗略的计算?

【问题讨论】:

    标签: hash simd hash-collision


    【解决方案1】:

    您可以比散列更快地从磁盘读取文件块的想法是未经检验的假设吗?磁盘 IO - 甚至 SSD - 比散列运行的 RAM 慢很多数量级。

    确保低冲突是所有哈希的设计标准,所有主流哈希都做得很好 - 只需使用主流哈希,例如MD5。

    特定于发布者正在考虑的解决方案,并行散列不会削弱散列。正如海报所说,有专门为块的并行散列和组合结果而设计的散列,尽管可能尚未广泛采用(例如MD6,它从 SHA3 中完整退出)

    更一般地说,有mainstream implementations 的散列函数确实使用 SIMD。哈希实现者非常performance-aware,并且确实需要时间来优化他们的实现;你将有一项艰巨的工作,相当于他们的努力。 strong 散列的最佳软件约为 6 到 10 个周期/字节。如果散列是真正的瓶颈,Hardware accelerated 散列也可用。

    【讨论】:

    • 如果您担心冲突,我会绕过 MD5 并使用更强大的东西,例如 SHA1、SHA-256 或 Whirlpool。
    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    相关资源
    最近更新 更多