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