Нужно ли хранить соль с bcrypt? - PullRequest
182 голосов
/ 10 ноября 2008

bCrypt's javadoc имеет следующий код для шифрования пароля:

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");

Эти фрагменты кода подразумевают, что случайно сгенерированная соль выбрасывается. Это так, или это просто вводящий в заблуждение фрагмент кода?

1 Ответ

209 голосов
/ 10 ноября 2008

Соль включена в хеш (закодирован в формате base64).

Например, в традиционных паролях Unix соль хранилась как первые два символа пароля. Остальные символы представляют значение хеш-функции. Функция проверки знает это и разбирает хеш, чтобы вернуть соль обратно.

...