Калькулятор хэш-кода CRC-32B
Опубликовано: 17 февраля 2025 г. в 18:29:41 UTC
Последнее обновление: 12 января 2026 г. в 09:16:04 UTC
CRC-32B Hash Code Calculator
Циклическая избыточность (CRC) — это код обнаружения ошибок, обычно используемый для выявления случайных изменений в исходных данных. Хотя технически это не криптографическая хеш-функция, CRC-32 часто называют хешем из-за его способности выдавать результат фиксированного размера (32 бита) из входных данных переменной длины. Версия, представленная на этой странице, — это вариант CRC-32B, который на самом деле является просто особенностью языка PHP, которая меняет порядок битов (little-endian против big-endian в оригинальном CRC-32).
Полное раскрытие информации: я не писал конкретную реализацию хэш-функции, используемой на этой странице. Это стандартная функция, входящая в состав языка программирования PHP. Я лишь сделал веб-интерфейс, чтобы сделать ее общедоступной здесь для удобства.
О хеш-алгоритме CRC-32B
Я не математик, но попробую объяснить эту хеш-функцию с помощью простой аналогии. В отличие от многих криптографических хеш-функций, это не особенно сложный алгоритм, так что, вероятно, всё будет понятно ;-)
Представьте, что вы отправляете письмо по почте, но опасаетесь, что оно может повредиться до того, как дойдет до получателя. Исходя из содержимого письма, вы вычисляете контрольную сумму CRC-32 и записываете её на конверте. Когда получатель получит письмо, он также сможет вычислить контрольную сумму и проверить, совпадает ли она с тем, что вы написали. Если совпадает, значит, письмо не было повреждено или изменено в процессе доставки.
Методика CRC-32 выполняет это в четыре этапа:
Шаг 1: Добавьте немного дополнительного пространства (отступа).
- CRC добавляет немного дополнительного места в конце сообщения (как при упаковке пенопластовых шариков в коробку).
- Это помогает системе легче выявлять ошибки.
Шаг 2: Волшебная линейка (многочлен)
- В CRC-32 используется специальная «волшебная линейка» для измерения данных. Представьте эту линейку как узор из неровностей и борозд (это многочлен, но не обращайте внимания на это слово). Наиболее распространенной «линейкой» для CRC-32 является фиксированный шаблон.
Шаг 3: Перемещение линейки (процесс деления)
- Теперь CRC перемещает линейку по сообщению. В каждой точке она проверяет, совпадают ли выступы и канавки. Если они не совпадают, CRC делает пометку (это делается с помощью простого XOR, как включение или выключение переключателей). Она продолжает перемещать линейку и переключать переключатели, пока не достигнет конца.
Шаг 4: Окончательный результат (контрольная сумма)
- После того, как вы проведете линейкой по всему сообщению, останется небольшое число (длиной 32 бита), представляющее исходные данные. Это число подобно уникальному отпечатку пальца для сообщения. Это контрольная сумма CRC-32.
Представленная на странице версия — это вариант CRC-32B, который в основном является особенностью PHP, изменяющей порядок битов (little-endian против big-endian). Вероятно, вам следует использовать эту версию только в том случае, если вам необходима совместимость с другим PHP-приложением, которое её использует.
У меня есть калькуляторы и для других вариантов:
- Связь
- Связь
Дополнительное чтение
Если вам понравился этот пост, вам также могут понравиться эти предложения:
