Вопрос

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 соль хранилась как первые два символа пароля. Остальные символы представляют значение хеш-функции. Функция проверки знает это и разбирает хеш, чтобы вернуть соль обратно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top