UTILS.
100% в браузере
🧂

Генератор и верификатор хешей scrypt KDF

Выведите ключ scrypt из пароля с настраиваемой стоимостью N, r, p или проверьте пароль по сохранённой строке scrypt. Работает полностью в вашем браузере.

Пароли хешируются на 100% в вашем браузере — ничего не загружается.

— результат появится здесь —

Об этом инструменте

Генератор и верификатор хешей scrypt KDF выводит и проверяет результаты scrypt локально в вашем браузере. scrypt, разработанный Colin Percival и стандартизированный в RFC 7914, — это memory-hard функция вывода ключа: её стоимость намеренно доминируется пропускной способностью памяти, чтобы специальное оборудование для взлома получало мало преимуществ. Конвейер — это PBKDF2-HMAC-SHA256 для расширения пароля, функция ROMix, построенная на BlockMix и ядре Salsa20/8, чтобы принудить большое последовательное использование памяти, и финальный PBKDF2-HMAC-SHA256 для получения производного ключа выбранной вами длины.

В режиме генерации читаются 16 случайных байтов соли из crypto.getRandomValues и запускается scrypt с тремя параметрами стоимости: N — это стоимость CPU/памяти и должна быть степенью двойки (по умолчанию 16384 = 2^14), r — размер блока (по умолчанию 8), а p — фактор распараллеливания (по умолчанию 1). Использование памяти примерно 128 · N · r байт — около 16 MiB при значениях по умолчанию — и инструмент предупреждает, когда ваши настройки превысили бы 256 MiB. Вывод — самоописывающая строка $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key>, где ln = log2(N), поэтому каждый параметр, нужный для проверки, несётся с хешем.

В режиме проверки разбираются ln, r, p, соль и сохранённый ключ из этой строки, пересчитывается производный ключ с кандидатом-паролем и делается сравнение за постоянное время, чтобы сообщить совпадение или несовпадение. Ядро scrypt работает как WebAssembly-сборка без eval под строгой политикой безопасности браузера, поэтому пароли обрабатываются на 100% в вашем браузере, и ничего не загружается.

Часто задаваемые вопросы

Почему N должна быть степенью двойки?
Шаг ROMix в scrypt индексирует таблицу из ровно N блоков и полагается на то, что N является степенью двойки, для своей адресации integerify-and-mask. Инструмент отклоняет значения, не являющиеся степенью двойки. Типичные варианты — 16384 (2^14) для интерактивного использования и 1048576 (2^20) для шифрования файлов.
Сколько памяти использует scrypt?
Примерно 128 · N · r байт. При значениях по умолчанию N=16384, r=8 это около 16 MiB. Поскольку браузер выделяет это реально, большие значения N или r могут быть медленными или отказать на устройствах с малой RAM — инструмент предупреждает выше 256 MiB.
Что контролируют r и p?
r — это размер блока, который масштабирует и использование памяти, и объём последовательной работы на блок; увеличение r повышает стоимость памяти наряду с N. p — это фактор распараллеливания, запускающий p независимых вычислений scrypt, что повышает стоимость CPU без повышения объёма памяти на экземпляр.
В каком формате сгенерированный хеш?
Самоописывающая строка $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>. Она встраивает каждый параметр, поэтому режиму проверки нужны только эта строка и пароль. Все вычисления локальны — ничего не загружается.

Больше инструментов