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