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 працює як eval-free WebAssembly-збірка під строгою політикою безпеки браузера, тож паролі обробляються на 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>. Він вбудовує кожен параметр, тож режиму перевірки потрібні лише той рядок і пароль. Увесь розрахунок локальний — ніщо не завантажується.

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