每次提交和重新提交后,BCryptPasswordEncoder()。encode(plainPassword)不返回相同的值

时间:2014-03-14 15:29:15

标签: spring-security

我在我的应用程序中应用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

这个原因我有时可以登录,有时候不会。

请帮忙解决。

1 个答案:

答案 0 :(得分:2)

这是正确的; BCryptPasswordEncoder().encode()应始终返回不同的结果。这是一种安全措施,它使得破解编码密码变得更加困难(这被称为" salting passwords")

如果您想知道密码是否正确,则需要使用BCryptPasswordEncoder.matches()代替。