32位校验和算法比CRC32质量更好?

时间:2011-12-06 09:08:00

标签: c hash checksum crc32

是否有任何32位校验和算法:

  • 输入数据大小的较小的哈希冲突概率< 1 KB?
  • 碰撞击中更均匀的分布。

这些与CRC32有关。我实际上并不指望第一个属性,因为存储空间限制为32位。但是对于第二个......似乎可以进行改进。

有什么想法吗?谢谢。 (我需要具体的实现,在C中更好,但C ++ / C#或任何开始的东西也可以)。

2 个答案:

答案 0 :(得分:4)

MurmurHash怎么样?它是said,这个散列具有良好的分布(通过卡方检验)和良好的雪崩效应。计算速度也非常好。

答案 1 :(得分:0)

不是第一个标准。任何设计良好的具有32位输出的散列函数对于任何输入对都具有1 in 2 ^ 32的碰撞机会。第二个标准定义不是很明确,虽然肯定会有一些统计测试可以使用,我确信有人已经完成了它(碰撞间隔的卡方?)。至于需要实现,我强烈建议您不要接受任何建议的哈希函数代码,这些哈希函数不是众所周知的哈希的实现,因为在滚动自己的哈希或加密时存在安全问题或性能不佳的高风险。一个众所周知但糟糕的散列函数比你自己设计的散列函数要好,即使后者测试得很好并具有“良好”的碰撞分布,只是因为前者有更多的眼球。

相关问题