5

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

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

这些相对于CRC32。由于 32 位存储空间的限制,我实际上不指望第一个属性。但对于第二个......似乎可能会有改进。

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

4

2 回答 2

4

MurmurHash怎么样?据说,这个哈希分布好(通过卡方检验)和雪崩效果好。计算速度也非常好。

于 2011-12-06T09:15:50.250 回答
0

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

于 2011-12-06T09:16:01.353 回答