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