我在我的应用程序中应用Spring安全性并使用BCrypt进行编码密码,我有时可以登录并且有时没有登录。我使用代码生成如下所示的哈希密码:
System.out.println(new BCryptPasswordEncoder()。encode(“admin”));
重新提交后我得到的结果不尽相同。这是打印出来的结果:
- $ 2A $ 10 $ xbM.XFChI0fV2RYqPe / XSewxSRSzwcbJ5TFAFGACRkTaHWmxL1x ..
- $ 2A $ 10 $ VOaha9xUUfzHL0hpd5.HE.RaLx5Gldy / MjapBoQUYYTGVdHLcSh8q
- $ 2A $ 10 $ 1 / Kf个/ Un2oQzARrD.SHsh2OC / Dxwpj1aIeatydMEQSbxgfxOkDF27e ==
- $ 2A $ 10 $ o61u5t / r0R2jhOouDGWCFuwOLl31NIh8UiDVzRN4TSBybUs4keCmW
这个原因我有时可以登录,有时候不会。
请帮忙解决。
答案 0 :(得分:2)
这是正确的; BCryptPasswordEncoder().encode()
应始终返回不同的结果。这是一种安全措施,它使得破解编码密码变得更加困难(这被称为" salting passwords")
如果您想知道密码是否正确,则需要使用BCryptPasswordEncoder.matches()代替。