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

Хэш FNV-1a (32-бит) онлайн

Улучшенный порядок операций FNV-1 — лучше распределяет короткие строки. Считается прямо в браузере — текст никуда не отправляется.

Вычислить FNV-1a (32-бит)

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

История FNV-1a

FNV-1a — доработка исходного FNV-1 (1991, Фаулер, Нолл, Во): те же самые константы, тот же самый принцип, но операции в цикле переставлены местами. Изменение небольшое на бумаге, но улучшает «лавинность» — то, насколько сильно один изменённый бит входа встряхивает весь результат, — особенно на коротких строках, которые как раз чаще всего и оказываются ключами хэш-таблиц. С тех пор FNV-1a стала версией по умолчанию, которую рекомендуют сами авторы FNV.

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

Разница с FNV-1 — буквально в порядке двух операций. FNV-1: сначала умножение, потом XOR. FNV-1a: сначала XOR аккумулятора с байтом, потом умножение на простое FNV (0x01000193). Начальное значение то же самое — 0x811c9dc5.

hash = 0x811c9dc5 для каждого байта b: hash = (hash XOR b) × 0x01000193 следующий байт хэш (32 бита)
Единственное отличие от FNV-1 — XOR и умножение поменялись местами

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

ПараметрЗначение
Длина хэша32 бита (8 hex-символов)
Операция на байтXOR, затем умножение (обратный FNV-1 порядок)
Начальное значение0x811c9dc5 (как у FNV-1)
Множитель (простое FNV)0x01000193 (как у FNV-1)
ТипНекриптографический хэш для хэш-таблиц

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

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

⚠️

Как и FNV-1, это не криптографическая функция — те же предостережения про hash-flooding при работе с недоверенными ключами без рандомизации seed.

Пример

СтрокаHello, world!
FNV-1aed90f094
Пустая строка811c9dc5