Хэш xxHash32 онлайн
32-битный участник семейства xxHash — разработан для предельной скорости на потоковых данных. Считается прямо в браузере — текст никуда не отправляется.
Вычислить xxHash32
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История xxHash32
xxHash разработал Ян Колле — тот же автор, что создал алгоритмы сжатия LZ4 и Zstandard. Первая версия появилась около 2012 года с чёткой целью: обогнать по скорости всё, что тогда существовало среди некриптографических хэшей, вплотную приблизившись к пределу пропускной способности оперативной памяти — то есть сделать так, чтобы хэширование стало «бесплатным» по сравнению со скоростью простого чтения данных.
Как устроен алгоритм
32-битный вариант заводит четыре независимых аккумулятора, инициализированных разными простыми числами, и обрабатывает вход блоками по 16 байт — по 4 байта на каждый аккумулятор параллельно. Каждый аккумулятор обновляется одинаковой формулой: acc = acc + слово × prime2; acc = rotl(acc, 13); acc = acc × prime1. После обработки всех блоков четыре аккумулятора объединяются в один через циклические сдвиги и сложения, затем идёт финальный этап avalanche — несколько сдвигов и умножений на простые числа, гарантирующих, что даже минимальное изменение входа сильно меняет результат.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 32 бита (8 hex-символов) |
| Размер блока обработки | 16 байт (4 × 4 аккумулятора) |
| Операции | умножение, циклический сдвиг, сложение |
| Тип | Некриптографический хэш |
| Автор | Ян Колле (автор LZ4, Zstandard), ~2012 |
Где применяется
- Контрольные суммы блоков в LZ4 и других быстрых форматах сжатия
- Файловые системы и системы хранения (например, ZFS), где важна скорость проверки целостности
- Быстрая дедупликация и сравнение больших объёмов данных
Криптостойкость
Некриптографический хэш, спроектированный исключительно для скорости — не устойчив к целенаправленному подбору коллизий.