Нужно ли хранить соль с помощью bcrypt?

bCrypt 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

Соль включается в хэш (кодируется в формате в формате base64).

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