Хэш 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 в документации.
Характеристики
| Параметр | Значение |
|---|---|
| Длина суммы | 32 бита (8 hex-символов) |
| Метод | Две суммы по модулю простого числа 65521 |
| Тип | Контрольная сумма (не криптографический хэш) |
| Придуман | 1995, Марк Адлер |
Где применяется
- Формат zlib (обёртка вокруг deflate-сжатых данных) — отсюда и название
- Некоторые инструменты синхронизации файлов, использующие скользящее окно контрольных сумм (сам принцип Adler-подобных сумм лёг и в основу алгоритма rsync)
Криптостойкость
Adler-32 — не криптографическая функция и, в отличие от CRC32, даже как контрольная сумма для обнаружения случайных ошибок заметно слабее на коротких данных. Используйте только там, где важна именно скорость на больших потоках, и не полагайтесь на неё для защиты от подделки.