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

Хэш xxHash32 онлайн

32-битный участник семейства xxHash — разработан для предельной скорости на потоковых данных. Считается прямо в браузере — текст никуда не отправляется.

Вычислить xxHash32

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

История xxHash32

xxHash разработал Ян Колле — тот же автор, что создал алгоритмы сжатия LZ4 и Zstandard. Первая версия появилась около 2012 года с чёткой целью: обогнать по скорости всё, что тогда существовало среди некриптографических хэшей, вплотную приблизившись к пределу пропускной способности оперативной памяти — то есть сделать так, чтобы хэширование стало «бесплатным» по сравнению со скоростью простого чтения данных.

Как устроен алгоритм

32-битный вариант заводит четыре независимых аккумулятора, инициализированных разными простыми числами, и обрабатывает вход блоками по 16 байт — по 4 байта на каждый аккумулятор параллельно. Каждый аккумулятор обновляется одинаковой формулой: acc = acc + слово × prime2; acc = rotl(acc, 13); acc = acc × prime1. После обработки всех блоков четыре аккумулятора объединяются в один через циклические сдвиги и сложения, затем идёт финальный этап avalanche — несколько сдвигов и умножений на простые числа, гарантирующих, что даже минимальное изменение входа сильно меняет результат.

4 ПАРАЛЛЕЛЬНЫХ АККУМУЛЯТОРА, ПО 4 БАЙТА ВХОДА НА КАЖДЫЙ acc1: +×prime2, rotl13, ×prime1 acc2: та же формула acc3: та же формула acc4: та же формула объединение 4 аккумуляторов avalanche (сдвиги × простые) → результат
Четыре независимых потока вычислений — задел на параллелизм ещё в версии 2012 года

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

ПараметрЗначение
Длина хэша32 бита (8 hex-символов)
Размер блока обработки16 байт (4 × 4 аккумулятора)
Операцииумножение, циклический сдвиг, сложение
ТипНекриптографический хэш
АвторЯн Колле (автор LZ4, Zstandard), ~2012

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

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

⚠️

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

Пример

СтрокаHello, world!
xxHash3231b7405d
Пустая строка (seed=0)02cc5d05