Hash 哈希函数组合-碰撞风险是否显著降低?

Hash 哈希函数组合-碰撞风险是否显著降低?,hash,collision,crc32,adler32,Hash,Collision,Crc32,Adler32,有人知道通过组合散列函数来降低碰撞概率是否真的有好处吗?我特别需要知道关于32位哈希的这一点,即结合Adler32和CRC32。 基本上,adler32(crc32(数据))会产生比crc32(数据)更小的碰撞概率吗? 最后一条评论给出了一些有利于合并的测试结果,但没有提到来源。 就我而言,冲突并不重要(即任务不涉及安全性),但如果可能的话,我还是希望尽可能降低概率。 附言:我刚刚开始在散列的奇妙世界,做了很多关于它的阅读。对不起,如果我问了一个愚蠢的问题,我甚至还没有掌握正确的“散列方言”,可

有人知道通过组合散列函数来降低碰撞概率是否真的有好处吗?我特别需要知道关于32位哈希的这一点,即结合Adler32和CRC32。 基本上,adler32(crc32(数据))会产生比crc32(数据)更小的碰撞概率吗? 最后一条评论给出了一些有利于合并的测试结果,但没有提到来源。 就我而言,冲突并不重要(即任务不涉及安全性),但如果可能的话,我还是希望尽可能降低概率。 附言:我刚刚开始在散列的奇妙世界,做了很多关于它的阅读。对不起,如果我问了一个愚蠢的问题,我甚至还没有掌握正确的“散列方言”,可能我的谷歌搜索也很糟糕。
谢谢。

这样把它们串联起来是没有意义的。您正在将一个32位空间散列到另一个32位空间

在第一步发生crc32碰撞的情况下,最终结果仍然是碰撞。然后在adler32步骤中添加任何潜在的碰撞。因此,它不能变得更好,只能是相同或更糟

为了减少冲突,您可以尝试独立使用两个哈希来创建64位输出空间:


adler32(数据)+1,以明确说明第二个哈希不能删除第一个哈希中的冲突。:)没错!谢谢你快速而有用的回答。我完全误解了那句话。我可能会坚持使用快速、快速和“脏”CRC32。