Хеши/крипто
Scrypt Hash + Verify
Хеширование паролей через scrypt (RFC 7914, memory-hard KDF) с проверкой пароля против имеющегося хеша.
Scrypt (RFC 7914) — один из первых memory-hard алгоритмов хеширования паролей: он намеренно требует много оперативной памяти, а не только времени процессора, чтобы усложнить параллельный перебор на GPU и ASIC-устройствах.
Как пользоваться
- Хеширование: введите пароль и настройте параметры (N — стоимость памяти, r — размер блока, p — параллелизм) — получите готовый хеш.
- Проверка: вставьте пароль и существующий scrypt-хеш, чтобы проверить соответствие.
- Каждое хеширование использует новую случайную соль, поэтому одинаковый пароль каждый раз даёт разный хеш.
Типичные сценарии
- Проверка, что бэкенд корректно хеширует пароли алгоритмом scrypt перед сохранением.
- Генерация тестового scrypt-хеша для fixtures или seed-данных в разработке.
- Сравнение scrypt с bcrypt и Argon2 при выборе алгоритма хеширования для нового проекта.
Что стоит помнить
Параметр N (стоимость памяти) экспоненциально увеличивает и нужную память, и время вычисления — подбирайте его в соответствии с реальной нагрузкой сервера.
Scrypt был вытеснен Argon2 (победителем официального Password Hashing Competition) как рекомендуемый выбор для новых систем, хотя сам scrypt всё ещё не считается небезопасным.
Статья об этом инструменте: Scrypt: зачем алгоритму нужно много памяти
Часто задаваемые вопросы
Чем scrypt отличается от bcrypt или PBKDF2?
Scrypt намеренно требователен как к памяти, так и к CPU, что делает его значительно дороже для взлома на GPU или специализированном ASIC-оборудовании по сравнению с bcrypt или PBKDF2, которые в основном противостоят лишь перебору на CPU.
За что отвечают параметры N, r и p?
N задаёт стоимость CPU/памяти (должен быть степенью двойки), r — размер блока, влияющий на использование памяти за операцию, а p — параллелизацию; увеличение любого из них повышает стоимость ресурсов как для легитимного использования, так и для атак.
Всё ещё ли scrypt хороший выбор по сравнению с Argon2?
Scrypt остаётся надёжным и проверенным временем, но для новых систем обычно рекомендуют Argon2 (победителя Password Hashing Competition), поскольку он предлагает более тонкое управление памятью и устойчивостью к атакам по побочным каналам.
Сколько памяти реально потребляет scrypt?
Примерно 128 × N × r байт на одно вычисление. При типичных параметрах (N=16384, r=8) это около 16 мегабайт на один хеш — незначительно для одного логина, но существенно при тысячах одновременных аутентификаций на сервере.
Где ещё применяется scrypt, кроме хеширования паролей?
Scrypt известен как алгоритм proof-of-work в некоторых криптовалютах (например, Litecoin) — его выбрали именно из-за устойчивости к майнингу на специализированных ASIC-устройствах, характерной для биткоина с его SHA-256.