Как BCryptPasswordEncoder работает в Spring.Security? - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь понять, как Spring Security может сопоставить необработанный пароль, введенный пользователем, с зашифрованным паролем в базе данных в случае случайного password salting от BCryptPasswordEncoder.

Мои вопросы: AFSKbcrypt(random salt + password) = random encoded password, так как bcrypt является one-way hashing function, а закодированный пароль зафиксирован в базе данных, я думаю, что Spring Security каким-то образом получит salt при кодировании пароля и перед проверкой совпадений с использованием BCryptPasswordEncoder:boolean matches(java.lang.CharSequence rawPassword, java.lang.String encodedPassword), верно?

Если это так, где хранится salt, в базе данных или где-то еще?

Если соль есть в базе данных, как защититься от взлома, если база данных выставлена?

1 Ответ

0 голосов
/ 24 декабря 2018

Соль хранится в том же столбце, что и хешированный пароль.Соли не считаются секретными.Поскольку каждый из них уникален, он предотвращает предварительный расчет радужных таблиц.

Если вы хотите повысить безопасность, рассмотрите возможность перетаскивания (пароль остается в приложении, а HMAC - соленые хэши)

...