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

Хэш 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 псевдослучайных байта, зашитых в алгоритм) — не криптографический ключ в полном смысле, а способ добавить в вычисления дополнительную «соль по умолчанию», усложняющую простое предсказание результата, оставаясь при этом полностью некриптографической функцией по своим гарантиям.

Короткий вход (≤16 байт) прямое смешивание + secret, без циклов Длинный вход 8 параллельных аккумуляторов + secret / финальный avalanche путь вычисления выбирается по длине входа — короткие строки не тратят время на циклы
Главное новшество XXH3 — разные, оптимизированные под конкретный размер входа стратегии

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

ПараметрЗначение
Длина хэша64 бита (16 hex-символов) — есть и 128-битный вариант
Аккумуляторов (длинный вход)8 (против 4 у xxHash64)
Секретная таблица192 байта констант, подмешивается в вычисления
ТипНекриптографический хэш, оптимизирован под SIMD
Опубликован2019

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

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

⚠️

Несмотря на «секретную» таблицу констант, XXH3 остаётся некриптографической функцией — секрет фиксирован в самом алгоритме (не является пользовательским ключом в криптографическом смысле) и не даёт защиты от целенаправленного подбора коллизий.

Пример

СтрокаHello, world!
XXH3f3c34bf11915e869
Пустая строка (seed=0)2d06800538d394c2