Нужно ли хранить соль с bcrypt?
-
07-07-2019 - |
Вопрос
javadoc bCrypt содержит этот код для шифрования пароля
String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt());
Чтобы проверить, совпадает ли открытый текстовый пароль с ранее хешированным, используйте метод checkpw:
if (BCrypt.checkpw(candidate_password, stored_hash))
System.out.println("It matches");
else
System.out.println("It does not match");
Эти фрагменты кода подразумевают, что случайно сгенерированная соль выбрасывается. Это так или это просто вводящий в заблуждение фрагмент кода?
Решение
Соль включена в хеш (закодирован в формате base64).
Например, в традиционных паролях Unix соль хранилась как первые два символа пароля. Остальные символы представляют значение хеш-функции. Функция проверки знает это и разбирает хеш, чтобы вернуть соль обратно.
Не связан с StackOverflow