【发布时间】:2014-11-08 18:22:25
【问题描述】:
我正在使用带有 Spring 安全性的 BCryptPasswordEncoder。我的期望是,对于相同的输入,我总是会得到相同的输出。但是对于相同的输入,我得到不同的输出。您可以使用下面的代码 sn-p 对其进行测试:
String password = "123456";
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode(password);
System.out.print(encodedPassword);
输出:$2a$10$cYLM.qoXpeAzcZhJ3oXRLu9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi
输出2:$2a$10$KEvYX9yjj0f1X3Wl8S.KPuWzSWGyGM9ubI71NOm3ZNbJcwWN6agvW
输出 3:$2a$10$nCmrPtUaOLn5EI73VZ4Ouu1TmkSWDUxxD4N6A.8hPBWg43Vl.RLDC
有人能解释一下,为什么 BCryptPasswordEncoder 会这样吗?
【问题讨论】:
-
为什么需要密码具有相同的哈希值?
-
这个问题的最佳答案在这里:How can bcrypt have built-in salts?
标签: java spring spring-security bcrypt