Как можно сохранить bcrypt?

Поскольку Spring устарел от старого интерфейса

org.springframework.security.crypto.password.PasswordEncoder;

Я искал альтернативы, которые работают с

org.springframework.security.authentication.encoding.PasswordEncoder;

Мой поиск указывает мне на: https://stackoverflow.com/a/18678325

Я тестировал bcrypt и мне было интересно, как он работает.

Объяснение на https://stackoverflow.com/a/6833165 указывает мне на один вопрос.

Если $2a$10$ZaDBCZaI59IMdKuBiRdubuMa2h/itIYIwqLHpS1q245ISD90xsjkW содержит всю информацию о типе кодировки и соли и так далее, и это хранится в моей базе данных, почему оно сохраняется? Если у кого-то есть этот «хеш», он может легко расшифровать его методом грубой силы.

В моем предыдущем проекте я использовал кодировку SHA с общесистемной секретной солью. В этом случае хэш, украденный из базы данных, не может быть легко расшифрован.

Так почему же bcrypt предпочтительнее SHA с общесистемной солью?


person Nabor    schedule 11.11.2013    source источник


Ответы (1)


2 балла:

  1. Bcrypt разработан, чтобы противостоять атакам грубой силы, имея настраиваемую сложность, которая произвольно замедляет процесс. Дополнительные сведения см. в Википедии.
  2. Использование одного и того же хэша для всех паролей, как это делает ваша существующая система, может быть уязвимо для дифференциальных атак, поскольку известно, что каждый пароль в базе данных содержит общий компонент.
person John Stauffer    schedule 11.11.2013