Я использую pbkdf2
для соления и хеширования паролей. Я понимаю, что соль должна быть незашифрованной и доступной, чтобы я мог снова использовать ее для проверки. Соль каждого пароля должна быть доступна, чтобы я мог солить и хэшировать пароль, который нужно проверить, и сравнить его с сохраненным.
Я думал хранить соль вот так
Предполагая, что соль всегда является строкой фиксированной длины, например, 10 символов.
finalPassword = salt + password;
//save finalPassword in the db
а затем проверить
salt = getFirst10CharsOf (finalPassword);
hash to-be-validated password with that salt
compare hashed password with the saved one
Мой вопрос: если хакер достаточно умен, чтобы получить мои хешированные пароли, что мешает ему увидеть часть getFirst10CharsOf
в моем коде и получить пару солей, чтобы она могла легко расшифровать пару хешей?
Я нашел много теории, но понятия не имею, как безопасно хранить соли на практике. Таким образом, они всегда могут быть доступны только для кода проверки, но не для всех.
Спасибо