简体中文 Tiếng Việt 日本語 한국어 हिन्दी Español Français العربية বাংলা Português Русский اردو Bahasa Indonesia Deutsch Naijá मराठी తెలుగు Türkçe தமிழ்
// checksum utility
CRC32Инструмент контрольной суммы
ТОЛЬКО НА СТОРОНЕ КЛИЕНТА
НЕТ ПЕРЕДАЧИ ДАННЫХ
🔵Все расчеты выполняютсялокально в вашем браузере. Никакие данные не загружаются ни на один сервер. Поддерживает варианты CRC-32/ISO-HDLC, CRC-32C, CRC-32/MPEG-2 и CRC-32/BZIP2.
Настройки расчета
CRC Вариант ↗
Кодировка ввода ↗
Формат вывода ↗
Входные данные
Перетащите сюда файл
Готово — введите данные и нажмите «Рассчитать CRC32»
Результаты расчета
ISO-HDLC
Кастаньоли
MPEG-2
BZIP2
Проверка контрольной суммы
Вставьте ожидаемое значение CRC32, чтобы сравнить его с текущим расчетом.
Входные байты
0
Всего вычислений
0
Текущий вариант
ISO-HDLC
Прошло (мс)
// CRC32 Variant Guide
Варианты CRC
CRC-32/ISO-HDLCPKZip · PNG · Ethernet
Наиболее распространенная реализация CRC-32, также называемая CRC-32b. Он использует отраженную форму полинома 0x04C11DB7, а именно 0xEDB88320. Как входные, так и выходные байты отражаются по битам (сначала младший бит), причем начальное значение и конечное исключающее ИЛИ устанавливаются в 0xFFFFFFFF.

Широко используется в ZIP, gzip, изображениях PNG, кадрах Ethernet (IEEE 802.3), PKCS#7 и многих устаревших системах. Это де-факто вариант CRC-32 по умолчанию.
Полином0x04C11DB7(нормальный) /0xEDB88320(отражено)
Начальное значение0xFFFFFFFF
Отражение вводаДа (RefIn = true)
Отражение выводаДа (RefOut = true)
Окончательное исключающее ИЛИ0xFFFFFFFF
Проверить значение0xCBF43926(для «123456789»)
CRC-32C / КастаньолиiSCSI · NVMe · SCTP
Предложенный Г. Кастаньоли и его коллегами в 1993 году, этот вариант использует полином 0x1EDC6F41 (отраженная форма 0x82F63B78). При том же расстоянии Хэмминга он обеспечивает более эффективное обнаружение пакетов ошибок, чем полином ISO-HDLC.

Аппаратное ускорение доступно с помощью инструкций Intel SSE4.2 и ARM CRC32. Он широко используется в современных протоколах хранения и транспорта, таких как iSCSI, NVMe, Btrfs и SCTP.
Полином0x1EDC6F41(нормальный) /0x82F63B78(отражено)
Начальное значение0xFFFFFFFF
Отражение вводаДа (RefIn = true)
Отражение выводаДа (RefOut = true)
Окончательное исключающее ИЛИ0xFFFFFFFF
Проверить значение0xE3069283(для «123456789»)
CRC-32/MPEG-2MPEG-2 · DVB · ATSC
Использует тот же полином 0x04C11DB7, что и ISO-HDLC, но ни ввод, ни вывод небитное отражение(сначала старший бит, обратный порядок байтов). Начальное значение — 0xFFFFFFFF, а окончательное исключающее ИЛИ отключено (XorOut = 0x00000000).

В основном используется для таблиц PSI/SI в транспортных потоках MPEG-2 (PAT, PMT, NIT и связанные таблицы), а также для проверок целостности в системах вещания DVB и ATSC.
Полином0x04C11DB7
Начальное значение0xFFFFFFFF
Отражение вводаНет (RefIn = ложь)
Отражение выводаНет (RefOut = ложь)
Окончательное исключающее ИЛИ0x00000000(отключено)
Проверить значение0x0376E6E7(для «123456789»)
CRC-32 / BZIP2BZip2 · AAL5 · DECT
Его параметры практически идентичны MPEG-2 (полином 0x04C11DB7, отсутствие отражения, начальное значение 0xFFFFFFFF). Единственная разница заключается вфинальное исключающее ИЛИ с 0xFFFFFFFF, который переворачивает каждый бит. Он также известен как CRC-32/AAL5 или CRC-32/DECT-B.

Используется форматом сжатого файла BZip2 и полем контрольной суммы концевика протокола ATM AAL5.
Полином0x04C11DB7
Начальное значение0xFFFFFFFF
Отражение вводаНет (RefIn = ложь)
Отражение выводаНет (RefOut = ложь)
Окончательное исключающее ИЛИ0xFFFFFFFF
Проверить значение0xFC891918(для «123456789»)
// Input Encoding Guide
Кодировка ввода
UTF-8 ТекстПо умолчанию · Общие
Рассматривает ввод какUTF-8строку, преобразует ее в байты, а затем вычисляет CRC32. Это наиболее распространенный режим для обычного текста, исходного кода, JSON и аналогичного контента.

Примечание. Один и тот же текст, закодированный другим набором символов, например GBK или UTF-16, создает другой поток байтов и, следовательно, другое значение CRC32. Этот инструмент всегда использует UTF-8.
Наилучший вариант дляОбычный текст, исходный код, JSON, XML
Пример"Привет" →48 65 6C 6C 6F(5 байт)
CJK ПерсонажиБольшинство символов CJK используют 3 байта в UTF-8.
ШестнадцатеричныйДвоичные данные · Кадры протокола
Рассматривает ввод как необработанныйшестнадцатеричные байтовые литералы. Пробелы и разрывы строк игнорируются. Каждые два шестнадцатеричных символа становятся одним байтом (00–FF).

Полезно, когда вам нужны проверки CRC для точных двоичных данных, таких как сетевые кадры, фрагменты образа прошивки или дампы памяти. Вы можете вставить вывод Wireshark или шестнадцатеричного дампа напрямую.
ФорматТолько0-9иa-f / A-Fразрешены
Количество символовДолжен быть четным (2 символа в байте)
Пример48656C6C6F= "Привет" (5 байт)
ПробелыИгнорируется автоматически.48 65 6Cто же самое, что48656C
Base64Двоичный код · Сертификаты · Изображения
Рассматривает ввод какСтрока в кодировке Base64, декодирует его в необработанные байты, а затем вычисляет CRC32. Полезно для сертификатов PEM, полезных данных JWT, URI данных и другого содержимого Base64.

Поддерживает стандартный алфавит Base64 (A-Z a-z 0-9 + /). Символ заполнения=является необязательным. URL-безопасный Base64 (-_) не поддерживается.
АлфавитA-Z a-z 0-9 + / =
ПримерSGVsbG8=→ «Привет» (5 байт)
URL-безопасныйНе поддерживается. Заменить-→+и_→/первый
⚠ 1 символInvalid — 6 бит недостаточно для формирования 1 байта (требуется 8 бит)
2 СимволыДекодирует в1 байт(минимальный допустимый ввод)
3 символовДекодирует в2 байта
4 символовДекодирует в3 байта(шаблон повторяется каждые 4 символа)
// Output Format Guide
Формат вывода
ШестнадцатеричныйНаиболее распространенный · По умолчанию
Отображает значение в виде 8-значного шестнадцатеричного числа в верхнем регистре с префиксом0x. Каждый символ представляет 4 бита, всего 32 бита. Это стандартный формат, используемый в большинстве инструментов, исходного кода и документации.

По сравнению с десятичным выводом, шестнадцатеричный формат облегчает проверку границ байтов и более естественно сопоставляет дампы памяти и поля протокола.
Пример0xCBF43926
Длина8 шестнадцатеричных символов = 32 бита
БазаБаза 16 (0–9, A–F)
Наилучший вариант дляКод, документация, Wireshark, шестнадцатеричные редакторы
Десятичный32-битное целое число без знака
Отображает контрольную сумму в виде32-битное десятичное целое число без знакав диапазоне 0–4 294 967 295 (2³²−1). Некоторые языки и инструменты сравнивают значения CRC в десятичной форме, и поля базы данных часто хранят это представление.

Примечание. Результаты CRC32 следует рассматривать как целые числа без знака. В типах со знаком int, таких как Java или C#, значения выше 0x7FFFFFFF могут выглядеть отрицательными и должны быть преобразованы в uint или более широкое беззнаковое представление.
Пример3421780262
Диапазон0–4,294,967,295
ПримечаниеДля Java int конвертируйте с помощью& 0xFFFFFFFFFL
Наилучший вариант дляБазы данных, значения структур Python, числовое сравнение
ДвоичныйБитовый анализ
Отображает контрольную сумму в виде 32-битной двоичной строки с префиксом0b. Каждый символ имеет значение 0 или 1, выравнивается по старшему биту слева и при необходимости дополняется ведущими нулями.

В основном полезно для понимания внутреннего алгоритма CRC, изучения полиномиального деления, обучения и встроенных сценариев, требующих обработки контрольной суммы на уровне битов.
Пример0b11001011…00100110
ДлинаФиксировано 32 бита с заполнением левым нулем.
Старший битБит 31 (старший бит) появляется в крайнем левом углу.
Наилучший вариант дляАнализ алгоритмов, обучение, встроенная отладка
ВосьмеричныйUnix · Файловые системы
Отображает контрольную сумму в виде 11-значного восьмеричного числа с префиксом0o. Для 32 бит требуется не более 11 восьмеричных символов, поскольку 3×11 = 33 > 32. Каждая восьмеричная цифра представляет 3 бита. Инструмент

Восьмеричный вывод редко встречается в современных рабочих процессах CRC, но он все еще появляется в некоторых инструментах Unix, встроенных наборах инструментов встроенного ПО и старых спецификациях протоколов связи.
Пример0o31572031046
ДлинаДо 11 восьмеричных цифр
За цифруПредставляет 3 бита (0–7).
Наилучший вариант дляИнструменты Unix, старые спецификации протоколов