Калькулятор контрольных сумм Adler-32 и Fletcher

Введите текст или вставьте hex-байты — и получите сразу три классические контрольные суммы на сложении: Adler-32, которую zlib записывает в конец сжатого потока, и две суммы Флетчера, от которых она произошла.

Формат входа

Байт: 9.

Adler-32
11E60398 300286872
Fletcher-16
EE9A 61082
Fletcher-32
B7DDA1F8 3084755448

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Введите или вставьте данные. Текст читается как UTF-8, поэтому кириллица и другие не-ASCII символы занимают по несколько байт.
  2. Для проверки сырых данных выберите «Hex-байты», например 78 9c или 0x01,0x02: пробелы, запятые и 0x игнорируются.
  3. Скопируйте значение в hex. Десятичное число рядом — та же сумма.

Как это работает

  • Adler-32: A = 1 + сумма байтов, B = сумма последовательных значений A, обе по модулю 65521; результат B·65536 + A.
  • Fletcher-16: sum1 = сумма байтов, sum2 = сумма последовательных sum1, обе по модулю 255; результат sum2·256 + sum1.
  • Fletcher-32: то же для 16-битных слов little-endian по модулю 65535; результат sum2·65536 + sum1.

Пример

Слово Wikipedia (9 байт):

  • Adler-32: байты в сумме дают 919, значит A = 1 + 919 = 920 = 0x0398; B = 4582 = 0x11E6. Результат 11E60398, в десятичном виде 300286872.
  • Fletcher-16: EE9A.
  • Fletcher-32: B7DDA1F8.

Тестовая строка abcde даёт Fletcher-16 C8F0 и Fletcher-32 F04FC729.

Советы

  • Сверка в Python: zlib.adler32(b"Wikipedia") возвращает 300286872.
  • Adler-32 пустого входа — 00000001, потому что A начинается с 1.
  • На коротких сообщениях Adler-32 слаб: A и B не успевают пройти модуль, и многие комбинации битов не используются. CRC-32 обнаруживает ошибки лучше.

Частые вопросы

Как считается Adler-32?

По байтам идут две суммы: A начинается с 1 и прибавляет каждый байт, B после каждого байта прибавляет текущее A. Обе берутся по модулю 65521 — наибольшего простого числа меньше 65536. Контрольная сумма — B × 65536 + A.

Где используется Adler-32?

В формате zlib (RFC 1950): это 4-байтовое окончание каждого потока zlib, поэтому её несут данные изображений PNG и многие сжатые файлы. В rsync используется похожая скользящая сумма для поиска совпадающих блоков.

Чем отличаются Fletcher-16 и Fletcher-32?

Fletcher-16 складывает байты по модулю 255 и даёт 16 бит. Fletcher-32 складывает 16-битные слова по модулю 65535 и даёт 32 бита. Adler-32 — это Fletcher-32, переделанный под байты, с простым модулем и начальным значением 1.

Как байты объединяются в слова для Fletcher-32?

В порядке little-endian: первый байт — младшая половина слова, второй — старшая, а нечётный последний байт дополняется нулём. Так данные читает распространённый код на C для x86, и так получаются опубликованные значения вроде F04FC729 для abcde. В других реализациях порядок может быть обратным.

Защищает ли контрольная сумма от подделки?

Нет. Такие суммы ловят случайные ошибки, например испорченные байты, но любой может изменить данные и пересчитать сумму. От намеренных изменений защищают криптографический хеш или HMAC.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 4 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.