BCryptPasswordEncoder如何在Spring.Security中工作?

时间:2018-12-24 20:43:48

标签: spring spring-security bcrypt

在尝试password salting随机BCryptPasswordEncoder的情况下,Spring Security如何将用户输入的原始密码与数据库中的编码密码进行匹配。

我的问题:AFSK bcrypt(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 :(得分:0)

盐与哈希密码存储在同一列中。盐不是秘密。由于每个都是唯一的,因此可以防止预先计算彩虹表。

如果需要更高的安全性,请考虑使用防盗功能(密码保留在应用程序中,HMAC保留加盐的哈希值)