В нескольких местах я читал, что 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
Может ли кто-нибудь предоставить правильный код, подтверждающий эту теорию, или указать мне, где я потерпел неудачу?