CRC Cyclic Redundancy Check
Циклический избыточный код (cyclic redundancy check или CRC) является небезопасной хэш-функцией, используемой для обнаружения неожидаемых изменений в необработанных компьютером данных. Он широко используется в сетях и устройствах хранения данных, таких, как жесткие диски. Проще говоря, устройство, поддерживающее CRC, вычисляет бинарную последовательность (циклический избыточный код или CRC) фиксированной длины для каждого блока данных, для хранения или отправки этой последовательности вместе с данными. Когда блок данных принимается или считывается, устройство вычисляет эту сумму из полученных данных. Если новый вычисленный циклический избыточный код не совпадает с полученным ранее (который пришел вместе с данными), то данные содержат ошибку, и устройство должно произвести ее коррекцию или считать блок данных заново.
CRC называется так, потому что является избыточным (добавляет ненужную информацию), содержит данные для проверки данных и его алгоритм основан на циклических кодах. Термин CRC может означать программу или функцию, которая его вычисляет, то есть принимает блок данных любой длины и возвращает данные фиксированной длины. CRC является очень популярным, так как его очень легко реализовать в аппаратных устройствах, просто проанализировать математически, а также он является хорошим средством для обнаружения ошибок на практике, например, ошибок, создаваемых зашумлением во время передачи сигналов. CRC был изобретен Уэсли В. Петерсоном и опубликован в статье в 1961 году. Наиболее раннее известное появление 32-битного многочлена, который чаще всего используется на практике, упоминается в документе 1975 года, написанном Технологическим институтом штата Джорджия имени Римской лаборатории.