【问题标题】:Is BCryptPasswordEncoder's password length limit more than 72 characters?BCryptPasswordEncoder 密码长度是否限制超过 72 个字符?
【发布时间】:2018-09-30 17:32:52
【问题描述】:
【问题讨论】:
标签:
security
spring-security
bcrypt
【解决方案1】:
BCryptPasswordEncoder 似乎在没有任何警告的情况下裁剪密码。
我尝试使用 BCrypt 而不是这样的 BCryptPasswordEncoder。
@Test
public void testBcrypt() throws Exception {
final String pw1_a71 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
final String pw2 = pw1_a71 + "b";
final String pw3 = pw2 + "b";
final String pw4 = "b" + pw2;
final String gensalt = BCrypt.gensalt();
for (final String pw : Arrays.asList(pw1_a71, pw2, pw3, pw4)) {
System.out.println(BCrypt.hashpw(pw, gensalt));
}
}
输出:
$2a$10$9S6TbAreOnBH1ZCdZ.G0WOBxiIEizo92CNeFFBlcg1bxyGa9mMgEu
$2a$10$9S6TbAreOnBH1ZCdZ.G0WO4Pm8wq3zRnVR6szbZynp8DHOq3XCwoW
$2a$10$9S6TbAreOnBH1ZCdZ.G0WO4Pm8wq3zRnVR6szbZynp8DHOq3XCwoW
$2a$10$9S6TbAreOnBH1ZCdZ.G0WOCC3kvOwtnzVpiEmOWvIA6WIKzxi7lhy