Оглавление
Циклическая проверка избыточности
-
Определение и применение CRC
- CRC (Cyclic Redundancy Check) – это алгоритм обнаружения ошибок в данных, который используется для проверки целостности данных.
- CRC был разработан для обнаружения ошибок в данных, передаваемых по каналам связи, и широко используется в различных протоколах.
-
История и развитие CRC
- CRC был впервые предложен в 1960 году, но не получил широкого распространения до 1970-х годов.
- В 1971 году был предложен алгоритм CRC-32, который стал стандартным для многих протоколов.
- В 1980-х годах были разработаны более эффективные алгоритмы CRC, такие как CRC-32C, которые используются в современных стандартах.
-
Математические основы CRC
- CRC основан на теории циклических проверок избыточности, которая была разработана в 1950-х годах.
- CRC использует полиномиальное деление для проверки данных, где остаток равен нулю при правильном выполнении операции.
- CRC-алгоритмы могут быть реализованы с использованием таблиц или более быстрых алгоритмов, таких как CRC-32C.
-
Сложности и путаница в CRC
- Существуют различные соглашения о порядке битов и байтов, которые могут привести к путанице.
- Некоторые CRC-алгоритмы могут быть запутаны для повышения криптографической надежности, но это не повышает их эффективность.
-
Стандарты и использование CRC
- Различные стандарты включают различные CRC-алгоритмы, которые подходят для разных целей.
- CRC-32C был выбран для использования в iSCSI и SCTP благодаря своей эффективности.
- CRC-32-IEEE является стандартным многочленом для CRC-32 и был выбран за свою эффективность.
-
Реализации и варианты CRC
- CRC-алгоритмы реализованы в аппаратных и программных средствах, включая SSE4.2 и ARM AArch64.
- Некоторые протоколы, такие как Gzip и Bzip2, используют разные варианты CRC, несмотря на использование одного и того же многочлена.
-
Дополнительные ресурсы
- Существуют каталоги CRC-алгоритмов и библиотеки для их реализации.
- CRC-алгоритмы были предметом исследований и оптимизации, что привело к созданию более эффективных многочленов.
Полный текст статьи: