Генератор Scrypt
Получите ключ scrypt из пароля со случайной или заданной солью. Выберите показатель затратности до 15 (N до 32768), размер блока r до 8, параллелизм p до 4 и длину ключа от 16 до 64 байт. Инструмент соответствует RFC 7914 и возвращает ключ, использованную соль и параметры в формате hex или Base64, готовые для сравнения с Node.js crypto.scrypt, Python hashlib или libsodium. Пароль не выводится.
Часто задаваемые вопросы
Что такое scrypt?
Scrypt — функция получения ключа с высокой потребностью в памяти, разработанная Колином Персивалем и стандартизированная в RFC 7914. Она получает ключ из пароля и соли, требуя для каждой попытки большого объема памяти. Ее используют для хранения паролей, шифрования дисков и некоторых криптовалют.
Что означают N, r и p?
N задает вычислительную и ресурсную затратность и должно быть степенью двойки; r — размер блока, а p — коэффициент параллелизации. Потребление памяти составляет примерно 128, умноженное на N и r байт, поэтому для N = 16384 и r = 8 требуется 16 MiB. Здесь N может достигать 32768, r — 8, а p — 4.
Какие параметры заданы по умолчанию?
По умолчанию заданы N = 16384 (показатель затратности 14), r = 8, p = 1 и ключ длиной 32 байта — интерактивные параметры, рекомендованные в статье о scrypt. Увеличьте N для более надежной защиты, насколько позволяет ваша система.
Как выбирается соль?
Если поле соли пустое, инструмент создает 16 случайных байт и показывает их в результате. Если вы введете соль, будут использованы ее байты в UTF-8, что позволит получить такой же ключ, как в другой системе. Никогда не используйте одну соль для разных паролей.
Можно ли воспроизвести тестовые векторы RFC 7914?
Да. Для пароля pleaseletmein и соли SodiumChloride при показателе затратности 14, r = 8, p = 1 и длине ключа 64 байта получается 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887 — третий тестовый вектор RFC.
Почему параметры ограничены?
Scrypt выделяет реальную память и выполняется на общем сервере. Ограничение N значением 32768, r — 8, а p — 4 удерживает потребление памяти для каждого вычисления в пределах примерно 32 MiB и ограничивает его длительность одной-двумя секундами.
Как сохранить хеш пароля scrypt?
Сохраняйте ключ, соль и значения N, r и p вместе: все они понадобятся, чтобы позже проверить пароль. Библиотеки, такие как Node.js crypto.scrypt, оставляют выбор формата хранения вам, а другие используют собственные строковые форматы.
Включен ли мой пароль в результат?
Нет. Ответ содержит ключ, соль и параметры, но не пароль. Ничего не записывается в журнал и не сохраняется.
Что выбрать: scrypt или Argon2?
Оба алгоритма требуют много памяти и подходят для паролей. Argon2id — более новая рекомендация, его проще настраивать, а scrypt широко поддерживается стандартными библиотеками, такими как Node.js и Python.
Что меняют параметры hex и Base64?
Они меняют способ записи ключа и соли в результате. Байты остаются теми же, поэтому выберите формат, который читает ваш код.