Хэш Adler-32 онлайн — калькулятор и разбор алгоритма | lavarden.ru
Войти

Хэш Adler-32 онлайн

Более быстрая, но менее надёжная альтернатива CRC32 — используется в zlib. Считается прямо в браузере — текст никуда не отправляется.

Вычислить Adler-32

Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.

История Adler-32

Adler-32 придумал Марк Адлер в 1995 году — один из авторов библиотеки сжатия zlib (вместе с Жаном Лу Гайи, автором gzip). Задача была конкретная: нужна была контрольная сумма для zlib-потоков быстрее, чем CRC32, — притом что CRC32 к тому моменту уже был везде и отлично справлялся, но требовал табличной реализации и был не самым дешёвым вариантом на слабом железе середины 90-х.

Как устроена контрольная сумма

В отличие от CRC, у Adler-32 нет никакого деления многочленов — это простая сумма по модулю простого числа. Алгоритм ведёт два счётчика. Первый, A, — это сумма всех байт данных плюс 1, взятая по модулю 65521 (наибольшее простое число, меньшее 2¹⁶). Второй, B, — это сумма всех промежуточных значений A после добавления каждого байта, тоже по модулю 65521. Итоговое 32-битное значение — это B, сдвинутый на 16 бит влево, и A, приклеенный в младшие 16 бит.

Такая схема считается быстрее CRC32 в чистом программном исполнении, потому что не требует таблицы поиска — только сложение и взятие остатка. Плата за скорость — заметно более слабая защита: Adler-32 хуже CRC32 обнаруживает ошибки в коротких сообщениях (короче примерно 1000 байт), что отмечают и сами авторы zlib в документации.

A = 1 + Σ байт mod 65521 B = Σ промежуточных A mod 65521 (B << 16) | A = результат
Никакого деления многочленов — только две суммы по модулю простого числа

Характеристики

ПараметрЗначение
Длина суммы32 бита (8 hex-символов)
МетодДве суммы по модулю простого числа 65521
ТипКонтрольная сумма (не криптографический хэш)
Придуман1995, Марк Адлер

Где применяется

Криптостойкость

⚠️

Adler-32 — не криптографическая функция и, в отличие от CRC32, даже как контрольная сумма для обнаружения случайных ошибок заметно слабее на коротких данных. Используйте только там, где важна именно скорость на больших потоках, и не полагайтесь на неё для защиты от подделки.

Пример

СтрокаHello, world!
Adler-32205e048a
Пустая строка00000001