CoderTools

CRC Калькулятор

Расчет различных контрольных сумм CRC с поддержкой ввода текста, hex и файлов

Введите текст UTF-8, будет преобразован в байты

О алгоритме CRC

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

CRC разработан так, чтобы его было легко реализовать аппаратно, и он особенно эффективен для обнаружения ошибок передачи.

Поддерживаемые профили CRC

Этот инструмент реализует широкий спектр стандартных алгоритмов CRC, используемых в промышленных и сетевых протоколах.

Алгоритм Разрядность Полином Использование
CRC-88 bit0x07Простая проверка данных, датчики
CRC-16/Modbus16 bit0x8005Протокол Modbus, промышленность
CRC-16/CCITT16 bit0x1021X.25, HDLC, Bluetooth
CRC-3232 bit0x04C11DB7ZIP, Ethernet, PNG
CRC-32C32 bit0x1EDC6F41iSCSI, SCTP, Btrfs
CRC-64/ECMA64 bit0x42F0E1EBA9EA3693ECMA-182, сжатие XZ

Типичные сценарии использования

Проверка сетевых пакетов (Ethernet)
Проверка целостности файлов (архивы ZIP)
Промышленные протоколы (Modbus RTU)
Проверка данных систем хранения
Передача данных во встраиваемых системах
Проверка прошивки и загрузчика

Часто задаваемые вопросы

Что такое CRC и чем он отличается от криптографического хеша?

CRC (Циклический избыточный код) — это алгоритм контрольной суммы, предназначенный для обнаружения случайных битовых ошибок при передаче или хранении данных. В отличие от криптографических хешей, таких как SHA-256, CRC не обеспечивает защиту от преднамеренных изменений — злоумышленник может создать данные, дающие нужное значение CRC. Используйте CRC для обнаружения ошибок в протоколах связи; для проверки целостности в критичных к безопасности задачах применяйте криптографический хеш.

Какой вариант CRC выбрать для моего случая?

CRC-32 (ISO 3309) широко применяется в Ethernet, ZIP и PNG. CRC-16/MODBUS — стандарт для промышленных протоколов. CRC-16/CCITT подходит для последовательной связи. CRC-8 используется для коротких сообщений во встроенных системах. Если спецификация протокола задаёт конкретный полином и начальное значение, необходимо точно им следовать.

Почему мой результат CRC отличается от ожидаемого?

Результат CRC зависит от четырёх параметров: полинома, начального значения, отражения входных/выходных данных и итогового XOR. Несоответствие любого из них даёт другой результат. Проверьте также, в каком кодировании передаются данные — UTF-8, ASCII или сырые байты: одна и та же строка может давать разные байтовые последовательности и, следовательно, разные значения CRC.

В чём разница между CRC-16/MODBUS и CRC-16/CCITT?

Оба являются 16-битными CRC, но используют разные полиномы и начальные значения. CRC-16/MODBUS применяет полином 0x8005, начальное значение 0xFFFF, с отражением входных и выходных данных. CRC-16/CCITT (также называемый CRC-CCITT или CRC-16-IBM) использует полином 0x1021 и начальное значение 0xFFFF. Для одних и тех же данных они дают совершенно разные результаты.

Можно ли вычислить CRC для двоичного файла, а не только для текста?

Да — вставьте шестнадцатеричные байты двоичных данных в шестнадцатеричном формате ввода. Инструмент обрабатывает сырые байтовые значения независимо от того, являются ли они печатными символами. Для очень больших двоичных файлов удобнее использовать утилиты командной строки, такие как cksum, или binascii.crc32() из Python.

Быстрое меню

Нет недавних инструментов