即使我使用相同的逻辑进行编码,编码后的值似乎也有所不同。
Bcrypt算法使用的内置盐值每次都不同。因此,是的,即使对于相同的 Clear Text, 相同的编码过程也会生成不同的 Cipher Text
。
从用户那里获得密码后,我使用上述逻辑进行编码,然后尝试与数据库进行比较
不要编码 原始密码
。假设
rawPassword是客户端提供给您的密码,并且
enpredPassword是数据库中已编码的存储密码。然后,不要使用来编码
rawPassword和比较结果,而是
String#equals使用
PasswordEnprer#matches方法:
PasswordEnprer passwordEnocder = new BCryptPasswordEnprer();if (passwordEnprer.matches(rawPassword, enpredPassword)) { System.out.println("Matched!");}


