Является ли CRC32 аддитивным?

В нескольких местах я читал, что crc32 является аддитивным, и поэтому: CRC (A xor B) = CRC (A) xor CRC (B).

Вышеупомянутое утверждение было опровергнуто следующим кодом, который я написал:

import zlib
def crc32(data):
        return zlib.crc32(data) & 0xffffffff

print crc32(chr(ord("A") ^ ord("B")))
print crc32("A") ^ crc32("B")

Вывод программы:

1259060791
2567524794

Может ли кто-нибудь предоставить правильный код, подтверждающий эту теорию, или указать мне, где я потерпел неудачу?

11
задан Nayuki 20 July 2015 в 06:02
поделиться