32 位 CRC,一些输入设置为零。这是否不如虚拟数据准确?

32 bit CRC with some inputs set to zero. Is this less accurate than dummy data?

对不起,如果我自己应该能够回答这个简单的问题!

我正在开发一个带有 32 位 CRC 硬件的嵌入式系统以提高速度。存在一个我无法修改的实用程序,它最初需要 3 个输入(单词)和 returns 个 CRC。

如果实现了标准的 32 位,那么从实际数据的 32 位字生成 CRC 和仅包含零的 2 个 32 位字会产生比我刚刚 up/set 更不可靠的 CRC最后 2 32 的随机值?

根据 CRC/polynomial,我对 CRC 的有限理解会说您输入的数据越多,它就越不准确。但是,在执行轮班时,归零数据不会降低准确性吗?

使用零与您可能选择的其他值没有什么不同。无论哪种方式,输入字都将在 CRC 位中传播。

我同意 Mark Adler 的观点,零在数学上并不比其他数字差。但是,如果您无法更改的实用程序做了一些不好的事情,例如将初始 CRC 设置为零,则选择非零填充字。初始 CRC=0 + Data=0 + Pads=0 产生最终 CRC=0。这在技术上是有效的,但常规地获取 CRC=0 对于数据完整性检查是不可取的。您可以使用非零填充字符来补偿此类问题,例如垫 = -1.