检查零填充比特流的crc32

时间:2011-02-25 01:45:14

标签: crc32

我正在尝试从维基百科(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吗?
  5. 有人能指出我出了什么问题吗?

1 个答案:

答案 0 :(得分:3)

实际上,CRC-32算法具有以下属性:

  1. 假设我们有一个任意文件x。
  2. 设y = crc32(x)in little endian
  3. 然后crc32(x append y)= 0x2144DF1C。