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

Хэш 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 — снова забота о скорости на железе без быстрого умножения.

hash = 0 для каждого байта b: hash = hash × 65599 + b следующий байт хэш (32 бита)
Та же форма, что у djb2, но множитель 65599 = 2¹⁶ + 2⁶ − 1 — удобен для сдвигов

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

ПараметрЗначение
Длина хэша32 бита (8 hex-символов)
Операция на байтhash = hash × 65599 + byte
Начальное значение0
ТипНекриптографический хэш для хэш-таблиц
АвторОзан Йигит, начало 1990-х

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

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

⚠️

Некриптографический хэш — коллизии подбираются легко, для защиты от подделки не годится.

Пример

СтрокаHello, world!
sdbmcf856ff5
Пустая строка00000000