Хэш XXH3 (64-бит) онлайн
Новое поколение xxHash (2019) — быстрее xxHash64 на коротких строках за счёт SIMD-дружелюбного дизайна. Считается прямо в браузере — текст никуда не отправляется.
Вычислить XXH3 (64-бит)
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История XXH3
XXH3 — третье поколение семейства xxHash, представленное Яном Колле в 2019 году. К тому моменту процессоры заметно изменились с 2012 года, когда появился xxHash64: у них стало больше SIMD-инструкций (векторные операции над несколькими числами сразу) и больше способов выполнять несколько вычислений параллельно внутри одного ядра. XXH3 переписан с нуля под эти возможности — и особенно заметно выигрывает на коротких строках, которые составляют огромную долю реальных хэшируемых данных (ключи словарей, идентификаторы, короткие сообщения), но были относительно слабым местом более ранних версий xxHash.
Как устроен алгоритм
В отличие от xxHash32/64 с их единой схемой на все длины входа, XXH3 использует разные пути вычисления в зависимости от размера данных. Для совсем коротких строк (до 16 байт) — компактное прямое смешивание пары 8-байтных фрагментов с заранее вычисленной «секретной» таблицей констант (secret), без циклов и накопителей вообще: одно умножение большого числа (128-бит через перемножение двух 64-битных) и пара XOR. Для более длинных данных используется знакомая по xxHash64 схема с параллельными аккумуляторами — но их не 4, а восемь, и каждый смешивается ещё и с байтами из той же секретной таблицы, а не только с данными сообщения.
Эта секретная таблица (192 псевдослучайных байта, зашитых в алгоритм) — не криптографический ключ в полном смысле, а способ добавить в вычисления дополнительную «соль по умолчанию», усложняющую простое предсказание результата, оставаясь при этом полностью некриптографической функцией по своим гарантиям.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 64 бита (16 hex-символов) — есть и 128-битный вариант |
| Аккумуляторов (длинный вход) | 8 (против 4 у xxHash64) |
| Секретная таблица | 192 байта констант, подмешивается в вычисления |
| Тип | Некриптографический хэш, оптимизирован под SIMD |
| Опубликован | 2019 |
Где применяется
- Новые проекты, выбирающие xxHash, — рекомендуемый по умолчанию вариант семейства
- Высоконагруженные сервисы и кэши, где хэшируется много коротких ключей
- Современные СУБД и системы обработки данных, ориентированные на максимальную скорость
Криптостойкость
Несмотря на «секретную» таблицу констант, XXH3 остаётся некриптографической функцией — секрет фиксирован в самом алгоритме (не является пользовательским ключом в криптографическом смысле) и не даёт защиты от целенаправленного подбора коллизий.