Хэш CRC16 (ARC) онлайн
16-битная контрольная сумма — компактнее CRC32, применяется в протоколах передачи данных. Считается прямо в браузере — текст никуда не отправляется.
Вычислить CRC16 (ARC)
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История CRC16
CRC-16 — 16-битный представитель того же семейства циклических избыточных кодов, что и CRC32: та же идея Уэсли Питерсона (1961), деление многочленов над GF(2), только с генераторным многочленом вдвое короче. В эпоху, когда каждый лишний байт контрольной суммы имел значение — медленные модемные линии, ранние микроконтроллеры без аппаратного умножения, — 16-битная версия часто была практичнее 32-битной: она компактнее и в некоторых реализациях быстрее считается.
У CRC-16 есть особенность, которая исторически создавала путаницу: под этим названием скрывается не один алгоритм, а целое семейство параметризаций с разным порождающим многочленом, начальным значением и порядком бит. Разные протоколы выбрали разные варианты — и одна и та же строка, «посчитанная через CRC-16» в двух разных системах, может дать два разных результата.
Как устроена контрольная сумма
Механика в точности та же, что у CRC32: данные — это двоичный многочлен, который делят на фиксированный порождающий многочлен, а результат — остаток от деления, реализуемый на практике через таблицу на 256 значений и побайтовую обработку. Разница только в степени порождающего многочлена — 16 вместо 32, — и, для конкретной реализации этого инструмента, в самом многочлене: используется вариант CRC-16/ARC (порождающий многочлен 0x8005, начальное значение 0x0000, без финального XOR).
| Вариант | Где встречается |
|---|---|
| CRC-16/ARC | Общего назначения, используется этим инструментом |
| CRC-16/MODBUS | Промышленный протокол Modbus (ПЛК, датчики) |
| CRC-16/CCITT | Bluetooth, некоторые протоколы связи |
| CRC-16/XMODEM | Протокол передачи файлов XMODEM |
Именно из-за такого разнообразия при интеграции с конкретным протоколом важно сверяться с его спецификацией, а не полагаться на название «CRC-16» без уточнения параметров.
Характеристики
| Параметр | Значение |
|---|---|
| Длина суммы | 16 бит (4 hex-символа) |
| Метод | Деление многочленов над GF(2), вариант CRC-16/ARC |
| Порождающий многочлен | 0x8005 |
| Тип | Контрольная сумма (не криптографический хэш) |
Где применяется
- Промышленные протоколы (Modbus) и встраиваемые системы с ограниченными ресурсами
- Старые протоколы передачи файлов (XMODEM, YMODEM)
- Везде, где достаточно 16 бит для обнаружения случайных ошибок и не нужен полный CRC32
Криптостойкость
Как и CRC32, CRC16 — линейная функция без какой-либо криптографической защиты: контрольную сумму под заданные данные можно подделать тривиально. Используйте только для обнаружения случайных ошибок передачи и хранения, никогда — для защиты от намеренной подделки.