如果我散列一堆哈希值,哈希冲突的可能性有多大?

时间:2009-11-10 08:48:22

标签: hash simd hash-collision

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

我很确定这种方法会产生较差的哈希......但是差多少?信封计算的任何后面?

1 个答案:

答案 0 :(得分:4)

你可以更快地从磁盘读取文件块的想法是否是一个未经测试的假设?磁盘IO - 甚至是SSD - 比散列的RAM要慢很多个数量级。

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

具体到海报正在考虑的解决方案,并不是并行哈希削弱了哈希。正如海报所说,有专门为块的并行散列设计的散列,并将结果结合起来,尽管可能尚未广泛采用(例如MD6,它从SHA3中完全撤消)

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