1

我正在尝试从 Wikipedia ( http://en.wikipedia.org/wiki/Cyclic_redundancy_check ) 验证此声明:

有时,实现会在多项式除法发生之前将n 个0 位(n是 CRC 的大小)附加到要检查的比特流。这样做的方便是原始比特流的余数加上校验值正好为零,因此可以简单地通过对接收到的比特流执行多项式除法并将余数与零进行比较来检查CRC。

我使用了来自http://www.lammertbies.nl/comm/info/crc-calculation.html的在线 CRC-32 计算器

  1. 原始消息是'test'或0x74657374,它的CRC-32是0xD87F7E0C。
  2. 然后添加 4 个零字节,因此消息为 0x7465737400000000,其 CRC-32 为 0x15521A21。
  3. 然后用步骤 2 中的 CRC-32 替换零,消息为 0x7465737415521A21。
  4. 0x7465737415521A21的CRC32是0xE1E9ADD7,这里不应该是0吗?

谁能指出我出了什么问题?

4

1 回答 1

3

Actually, the CRC-32 algorithm has the following property:

  1. Suppose we have an arbitrary file x.
  2. Let y = crc32(x) in little endian.
  3. Then crc32(x append y) = 0x2144DF1C.
于 2011-07-13T00:47:44.770 回答