Контекст
Я имею дело с системой PHP, использующей обновленный алгоритм bcrypt (поскольку в базовом алгоритме была известная уязвимость).
Так что функция PHP password_hash теперь генерирует хэши с префиксом $2y$
, так как старые (с префиксом $2a
) были уязвимы.
Spring Security BCrypt , который я использую в другой системе Java, генерирует оригинальные хэши формата $2a$
в качестве базовой реализации (jBCrypt вместо C BCrypt, как , упомянутый в этом посте SO ) не был уязвим к той же атаке.
Задача
Проверка генерирующих PHP хэшей в Spring Security не работает. Есть ли способ проверить сгенерированные PHP хэши с помощью Spring Security?
* * Пример тысяча двадцать-одина * * тысяча двадцать-дв
php > $pwd = password_hash('foo', PASSWORD_BCRYPT, ['cost' => 12]);
php > echo $pwd;
$2y$12$TRc5ZjcmDJ8oFaoR1g7LD.RCxBTUZnGXB66EN9h9rKtNWg.hd7ExK
затем с использованием Java + Spring Security:
@Test
public void decryptsPhpHash() {
boolean result = BCrypt.checkpw("foo", "$2y$12$TRc5ZjcmDJ8oFaoR1g7LD.RCxBTUZnGXB66EN9h9rKtNWg.hd7ExK");
assertThat(result).isTrue();
}
выдает следующую ошибку:
java.lang.IllegalArgumentException: Invalid salt revision