Термин · Глоссарий B2B-ПО

CRC (проверка циклическим избыточным кодом) (CRC (Cyclic Redundancy Check))

CRC (Cyclic Redundancy Check, проверка циклическим избыточным кодом) – алгоритм обнаружения ошибок в данных при передаче или хранении. Основан на делении двоичного сообщения на полином-делитель; остаток от деления служит контрольной суммой. Широко используется в сетевых протоколах, файловых системах и хранении данных.

Буква «C» В категориях: 5 Платформ: 6+

Введение

CRC (Cyclic Redundancy Check, циклический избыточный код) – широко применяемый алгоритм обнаружения ошибок при передаче данных по каналам связи или при хранении на носителях. Алгоритм генерирует короткую контрольную сумму фиксированной длины из блока данных; получатель выполняет ту же операцию и сравнивает результат – несовпадение означает повреждение данных.

CRC не исправляет ошибки (для этого существуют коды с исправлением ошибок – ECC, Reed-Solomon), а лишь обнаруживает их с высокой надёжностью. Алгоритм основан на математике полиномов над полем GF(2) – вычислениях по модулю 2.

История и контекст

CRC изобрёл W. Wesley Peterson в 1961 году, опубликовав работу «Cyclic Codes for Error Detection». В ней он предложил использовать полиномиальное деление над полем GF(2) для генерации контрольного кода. С 1970-х годов CRC стал стандартом де-факто для обнаружения ошибок в коммуникационных системах.

CRC-32 (32-битная версия) был включён в стандарт IEEE 802.3 для Ethernet в 1980 году и стал одним из наиболее распространённых CRC-полиномов. Сегодня различные варианты CRC встроены практически в каждый цифровой интерфейс: USB, SATA, Bluetooth, ZIP, PNG.

Как это работает

Алгоритм CRC состоит из нескольких шагов:

  1. Выбор полинома-делителя: стандартный полином фиксированной длины (например, CRC-32: 0x04C11DB7). Длина CRC = степень полинома (32 бита для CRC-32).
  2. Дополнение сообщения: к данным добавляются n нулей (n = длина CRC в битах).
  3. Полиномиальное деление по модулю 2 (XOR): сообщение делится на полином-делитель с использованием операции XOR (без переноса).
  4. Остаток = CRC: остаток от деления добавляется к передаваемым данным.
  5. Проверка на приёме: получатель делит принятые данные (включая CRC) на тот же полином – если остаток равен нулю, ошибок нет.

Аппаратная реализация CRC через регистры сдвига с обратной связью (LFSR) работает за один такт на бит, что делает алгоритм исключительно быстрым.

Где применяется

  • Сетевые протоколы: Ethernet (IEEE 802.3) использует CRC-32 в поле FCS (Frame Check Sequence) каждого кадра.
  • Файловые форматы: ZIP, PNG, GZIP хранят CRC для проверки целостности файлов.
  • Последовательные интерфейсы: USB, HDLC, CAN-bus используют CRC для защиты передачи данных.
  • Хранение данных: файловые системы (ext4, NTFS, ZFS) применяют CRC для обнаружения повреждений на носителе.
  • Телекоммуникации: GSM, DVB, ATM используют различные полиномы CRC.

Преимущества и ограничения

Преимущества: высокая надёжность обнаружения ошибок (CRC-32 обнаруживает все одиночные, двойные и все ошибки нечётной кратности); исключительно эффективная аппаратная реализация; стандартизированность.

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

Связь с другими понятиями

CRC относится к классу хешей/контрольных сумм, но не является криптографическим хешем (MD5, SHA-256 обеспечивают защиту от намеренных модификаций). Аналоги для других целей: Checksum (простая сумма байтов), Parity bit (бит чётности). В сетевом стеке CRC работает на канальном уровне (L2), тогда как IP-checksum – на сетевом (L3). Для исправления ошибок (а не только обнаружения) применяются коды Хэмминга, Reed-Solomon и Turbo-коды.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «CRC (проверка циклическим избыточным кодом)».

Платформы класса «CRC (проверка циклическим избыточным кодом)»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

Dionis-NX

Dionis-NX

Информационная безопасность
Программно-аппаратные комплексы Дионис NX предназначены для использования в роли маршрутизаторов, криптомаршру...
Цена по запросу
★ 4.2
Подробнее →
С-Терра Шлюз представляет собой программный комплекс на аппаратной платформе (программно-аппаратный комплекс,...
Цена по запросу
Подробнее →
GD

Guardant DL

Информационная безопасность
Guardant DL — программный ключ для лицензирования и защиты от копирования программного обеспечения, распростра...
Цена по запросу
★ 4.2
Подробнее →
Avanpost FAM

Avanpost FAM

Информационная безопасность
Система единой аутентификации сотрудников в корпоративных ресурсах организации. Обеспечивает прозрачную и мног...
Цена по запросу
★ 4.0
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «CRC (проверка циклическим избыточным кодом)».

Где применяется

Отрасли, в которых «CRC (проверка циклическим избыточным кодом)» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про CRC (проверка циклическим избыточным кодом)

Что такое CRC?

CRC (Cyclic Redundancy Check) – алгоритм обнаружения ошибок в данных. Вычисляется как остаток от полиномиального деления данных по модулю 2. Несовпадение CRC на отправителе и получателе означает повреждение данных.

Чем CRC отличается от MD5 и SHA-256?

CRC – для обнаружения случайных ошибок при передаче/хранении, вычисляется за микросекунды. MD5 и SHA-256 – криптографические хеши, устойчивые к намеренным модификациям. CRC не защищает от умышленной фальсификации данных.

Почему CRC широко используется в Ethernet?

Ethernet использует CRC-32 в поле FCS каждого кадра. Аппаратная реализация через LFSR позволяет вычислять CRC на скорости сети (10 Гбит/с+) с минимальной задержкой, обнаруживая повреждения при физической передаче.

Что такое CRC-32 и CRC-16?

Различные варианты CRC отличаются длиной и полиномом. CRC-32 (32 бита) – для Ethernet, ZIP, PNG. CRC-16 (16 бит) – для Modbus, USB. CRC-8 – для простых протоколов IoT. Длиннее код – надёжнее обнаружение ошибок.

Исправляет ли CRC ошибки?

Нет. CRC только обнаруживает ошибки, сигнализируя о повреждении. Для исправления ошибок используются другие коды: Хэмминг, Reed-Solomon (CD/DVD), Turbo-коды (мобильная связь), LDPC (Wi-Fi, 5G).