CRC (циклический избыточный код)
Контрольная сумма на основе деления многочленов, рассчитанная на те ошибки, которые на самом деле порождают шумные линии и изношенные ячейки флеш-памяти.
Метод описал У. Уэсли Петерсон в 1961 году. Данные рассматриваются как один длинный двоичный многочлен и делятся на фиксированный порождающий многочлен; остаток и есть контрольная сумма. Звучит сложно, но в железе сводится к нескольким XOR и сдвигам — потому CRC встречается повсюду: в кадрах Ethernet, сообщениях CAN, ZIP и PNG. Во многих микроконтроллерах есть отдельный блок CRC, а загрузчик часто проверяет CRC образа прошивки, прежде чем передать ему управление.
n-битный CRC ловит любую одиночную битовую ошибку и любой пакет ошибок длиной до n бит. Но от умышленной подмены он не защищает: пересчитать его может кто угодно. Для этого нужна подпись.