Хэш 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.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 32 бита (8 hex-символов) |
| Операция на байт | XOR, затем умножение (обратный FNV-1 порядок) |
| Начальное значение | 0x811c9dc5 (как у FNV-1) |
| Множитель (простое FNV) | 0x01000193 (как у FNV-1) |
| Тип | Некриптографический хэш для хэш-таблиц |
Где применяется
- Хэш-таблицы и словари — сегодня чаще выбирают именно этот вариант, а не исходный FNV-1
- Быстрая дедупликация, ключи кэша, контрольные суммы некриптографического назначения
Криптостойкость
Как и FNV-1, это не криптографическая функция — те же предостережения про hash-flooding при работе с недоверенными ключами без рандомизации seed.