在尝试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
是存储在数据库中还是其他地方?
如果盐在数据库中,那么如何在暴露数据库的情况下防止开裂?
答案 0 :(得分:0)
盐与哈希密码存储在同一列中。盐不是秘密。由于每个都是唯一的,因此可以防止预先计算彩虹表。
如果需要更高的安全性,请考虑使用防盗功能(密码保留在应用程序中,HMAC保留加盐的哈希值)