完美 32 位 crc 的预期冲突

Posted

技术标签:

【中文标题】完美 32 位 crc 的预期冲突【英文标题】:Expected collisions for perfect 32bit crc 【发布时间】:2011-04-10 04:43:41 【问题描述】:

我正在尝试确定我的 crc 与“理想”的 32 位 crc 相比如何。

所以我运行我的 crc 超过 100 万个完全随机的数据样本并收集了碰撞数量,我想将此数字与我可以从“理想”crc 中预期的碰撞数量进行比较.

有谁知道如何计算“ideal”32 位 crc 的预期碰撞?

【问题讨论】:

【参考方案1】:

将您自己的 CRC 与 0x1EDC6F41 作为您的“理想”参考进行比较。

话虽如此,没有理想的 32 位 CRC。根据散列数据的长度,不同的多项式具有不同的碰撞特性。然而,Castagnoli 在 1993 年的一篇论文发现了在最广泛的数据长度范围内被认为是最佳的 32 位 CRC 值,即 0x1EDC6F41。这个多项式被一些网络协议使用,比如 iSCSI 以及 x86 CRC32 指令。

【讨论】:

【参考方案2】:

这很好地解释了“生日问题”以及所有关于预测碰撞概率CRC32 Hash Collision Probability

【讨论】:

以上是关于完美 32 位 crc 的预期冲突的主要内容,如果未能解决你的问题,请参考以下文章

使用 32 位散列时的冲突概率

CRC32 碰撞

jdk32位跟jdk64位会冲突吗

具有 32 位整数的低冲突率的快速字符串散列算法 [关闭]

尝试在 64 位机器上将 Detours.lib 编译为 32 位:LNK1112:模块机器类型“x86”与目标机器类型“x64”冲突

Devart.Data.MySql:并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条