devopscodepro
Язык
Работает полностью в браузере — данные не покидают страницу.

Хеширование паролей

Выведите ключи через Argon2id, scrypt, PBKDF2 или bcrypt и посмотрите, сколько реально занимает каждый набор параметров.

Подбор параметров хеширования паролей по замерам

Каждая рекомендация по хешированию паролей заканчивается словами «подберите параметры под своё железо». Этот инструмент позволяет это сделать буквально: выберите Argon2id, scrypt, PBKDF2 или bcrypt, задайте параметры — и рядом с выведенным ключом появится реальное время вычисления.

Значения по умолчанию — текущие рекомендации OWASP: Argon2id с 19 МиБ и двумя проходами, scrypt с N=2^15, PBKDF2 с 600 000 итераций, bcrypt со стоимостью 10. Дальше поднимайте стоимость, пока время не встанет туда, куда позволяет бюджет задержки логина, — для интерактивной аутентификации обычно целятся в 100–500 мс.

Показанное время — один JavaScript-поток этого устройства. Серверы выполняют нативные реализации и отличаются: используйте цифру как относительный ориентир для сравнения наборов параметров, а финальный выбор подтверждайте на боевом железе.

Какой алгоритм выбрать новой системе?

Argon2id — по рекомендации OWASP и по замыслу самого алгоритма: он стоит атакующему не только времени, но и памяти, что подрубает GPU-фермы перебора. scrypt — достойный второй выбор; bcrypt остаётся приемлемым для существующих систем; PBKDF2 — там, где его диктует FIPS.

Чем KDF отличается от обычного хеша?

Хеш вроде SHA-256 спроектирован быстрым — для паролей это ровно наоборот: атакующий с GPU перебирает миллиарды в секунду. KDF намеренно дорог по времени (все здесь) и по памяти (Argon2, scrypt), превращая каждую попытку из наносекунд в настоящую работу.

Почему мой ключ не совпадает с выводом другого инструмента?

Тот же алгоритм, тот же пароль, та же соль, те же параметры, та же длина вывода — поменяйте любое, и ключ изменится полностью. Обычные виновники: соль, вставленная текстом там, где ждали hex, или другое число итераций. Здесь соль принимается строго как hex, чтобы ввод был однозначным.

Можно ли использовать эти выводы как ключи шифрования?

Для этого KDF и существует — вывести ключ из парольной фразы. Выведите 32 байта и используйте их с AES-256-GCM (инструмент шифрования здесь принимает ровно это). Храните соль и параметры рядом с шифротекстом — они не секретны.

Почему Argon2 здесь медленнее своих эталонных бенчмарков?

Эталонная реализация — нативный код с SIMD, а это JavaScript в один поток. Соотношение стоимости между наборами параметров сохраняется — а для подбора нужно именно оно; абсолютные цифры подтверждайте серверной библиотекой.

Смежные инструменты: bcrypt / htpasswd, Шифрование и Генератор паролей.