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");
Эти фрагменты кода означают, что случайно сгенерированная соль выбрасывается. Это так, или это просто вводящий в заблуждение фрагмент кода?
Соль включается в хэш (кодируется в формате в формате base64).
Например, в традиционных паролях Unix соль хранилась в качестве первых двух символов пароля. Остальные символы представляли хеш-значение. Функция checker знает это и вытягивает хэш отдельно, чтобы вернуть соль.