Я пытаюсь понять, как 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
, в базе данных или где-то еще?
Если соль есть в базе данных, как защититься от взлома, если база данных выставлена?