Хэш sdbm онлайн
Родом из одноимённой СУБД — похож на djb2, но с другими коэффициентами умножения. Считается прямо в браузере — текст никуда не отправляется.
Вычислить sdbm
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История sdbm
sdbm — хэш-функция из одноимённой библиотеки sdbm, свободной реализации простого файлового key-value хранилища в духе классической Unix-утилиты ndbm, написанной Озаном Йигитом в начале 1990-х. Как и djb2 того же периода, алгоритм разошёлся далеко за пределы исходной библиотеки — сегодня его чаще встречают как ещё один «простой быстрый хэш» в учебниках, чем как часть самой sdbm.
Как устроен алгоритм
Логика та же, что у djb2 — аккумулятор, умножаемый на константу и складываемый с очередным байтом, — но с другим множителем: 65599 вместо 33. Число выбрано не случайно: 65599 = 2¹⁶ + 2⁶ − 1, а значит умножение на него можно заменить дешёвой комбинацией сдвигов и вычитания: hash×65599 = (hash<<16) + (hash<<6) − hash — снова забота о скорости на железе без быстрого умножения.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 32 бита (8 hex-символов) |
| Операция на байт | hash = hash × 65599 + byte |
| Начальное значение | 0 |
| Тип | Некриптографический хэш для хэш-таблиц |
| Автор | Озан Йигит, начало 1990-х |
Где применяется
- Библиотека sdbm и её производные key-value хранилища
- Ещё один учебный «простой хэш», встречающийся в курсах по структурам данных наравне с djb2
Криптостойкость
Некриптографический хэш — коллизии подбираются легко, для защиты от подделки не годится.