Есть массив данных, для которого получена CRC-контрольная сумма. Можно ли после изменения фрагмента массива обновить контрольную сумму без полного ее перерасчета. Ликбез по CRC вроде бы как наводит на мысль, что можно. Соображения такие: согласно Wiki (
http://en.wikipedia.org/wiki/Generator_polynomial), если отождествлять бинарные последовательности с полиномами из
![$GF(2)[x]$ $GF(2)[x]$](https://dxdy-03.korotkov.co.uk/f/6/a/6/6a6be4ffc06e307f4304cae16a30d05f82.png)
, то полином

, отвечающий контрольной сумме размера

бит, для данных, представленных полиномом

, должен находиться из условия:
где

- некоторый фиксированный полином.
Как я понимаю, пользуясь тем, что полиномы с операциями сложения и умножения по модулю

образуют кольцо, можно записать:

Тогда для полинома

фрагментарно измененного массива полином

его контрольной суммы можно представить как
где

.
Откуда вытекает, что для расчета CRC-контрольной суммы измененного массива достаточно:
1) выполнить побитовое вычитание фрагментов массива (соответствует нахождению

);
2) для полученной разности выполнить побитовый сдвиг влево на

-разрядов (соответствует нахождению

);
3) полученный результат вычесть побитово из прежней контрольной суммы;
4) рассчитать остаток от деления на

. Он и будет искомой обновленной контрольной суммой измененного массива.
Так ли это?