Hash 如果我散列一组散列,散列冲突的可能性有多大?

Hash 如果我散列一组散列,散列冲突的可能性有多大?,hash,simd,hash-collision,Hash,Simd,Hash Collision,假设我使用散列来识别文件,所以我不需要它来确保安全,我只需要最小化冲突。我在想,我可以通过使用SIMD并行运行四个哈希,然后对最终结果进行哈希运算来加快哈希运算的速度。如果散列被设计成一个512位的块,我只是一步一步地遍历这个文件,一次获取4x512位的块,然后从中生成四个散列;然后在文件的末尾,我将四个结果散列在一起 我很确定这个方法会产生更差的散列。。。但是有多穷呢?是否有任何后台计算?从磁盘读取文件块的速度比散列文件块的速度快的想法是一个未经验证的假设?磁盘IO(甚至SSD)比散列所使用的

假设我使用散列来识别文件,所以我不需要它来确保安全,我只需要最小化冲突。我在想,我可以通过使用SIMD并行运行四个哈希,然后对最终结果进行哈希运算来加快哈希运算的速度。如果散列被设计成一个512位的块,我只是一步一步地遍历这个文件,一次获取4x512位的块,然后从中生成四个散列;然后在文件的末尾,我将四个结果散列在一起


我很确定这个方法会产生更差的散列。。。但是有多穷呢?是否有任何后台计算?

从磁盘读取文件块的速度比散列文件块的速度快的想法是一个未经验证的假设?磁盘IO(甚至SSD)比散列所使用的RAM慢很多数量级

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

具体到海报所考虑的解决方案,并行散列削弱了散列并不是必然的。正如海报上所说,有专门设计用于块并行散列和合并结果的散列,尽管可能尚未被广泛采用(例如,未中断地退出SHA3)


更一般地说,有许多哈希函数确实使用SIMD。散列实现者非常复杂,并且确实需要时间来优化他们的实现;你将有一项艰巨的工作来平衡他们的努力。用于强散列的最佳软件大约是6到10个周期/字节。如果哈希是真正的瓶颈,也可以使用哈希。

如果您担心冲突,我会绕过MD5,使用更强大的工具,如SHA1、SHA-256或Whirlpool。