Spring 中的 BCrypt 提供与在线工具不同的哈希值
BCrypt in Spring gives different hash then online tools
我在 Spring 中使用 BCrypt,它给了我不同的哈希值,然后一些在线工具正在使用 https://bcrypt-generator.com/
知道为什么吗?
我尝试在 Spring 中将强度设置为 12,并在 bcrypt-generator.com 中将轮次设置为 12,但没有成功。
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setPasswordEncoder(new BCryptPasswordEncoder(12));
provider.setUserDetailsService(bettingBotUserDetailsService);
对于原始密码 "admin" 我得到这些结果:
bcrypt-generator.com 12 轮:
yh6Idq/TwfcuJu6H1VXie/ao7P4AKlLgIrC5yxbwlEUdJjx9Sl5S
Spring(从调试模式捕获):
a$ED5wQChpxzagbvhlqEqD2.iIdIKv9ddvJcX0WKrQzSOckgc3RHFLW
BCrypt 为相同的输入生成不同的盐。 Bcrypt Algorithm
BCrypt returns 每次不同的散列,因为它将不同的随机值合并到散列中。这被称为 "salt"。它可以防止人们使用 "rainbow table"
、预先生成的 table 将密码哈希映射回他们的密码来攻击您的哈希密码。盐意味着密码没有一个散列,而是 2^16
个。
我们可以用普通字符串检查散列如下
Boolean isMatch = passwordEncoder().matches(currentPassword,dbPassword);
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
我在 Spring 中使用 BCrypt,它给了我不同的哈希值,然后一些在线工具正在使用 https://bcrypt-generator.com/
知道为什么吗?
我尝试在 Spring 中将强度设置为 12,并在 bcrypt-generator.com 中将轮次设置为 12,但没有成功。
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setPasswordEncoder(new BCryptPasswordEncoder(12));
provider.setUserDetailsService(bettingBotUserDetailsService);
对于原始密码 "admin" 我得到这些结果:
bcrypt-generator.com 12 轮:
yh6Idq/TwfcuJu6H1VXie/ao7P4AKlLgIrC5yxbwlEUdJjx9Sl5S
Spring(从调试模式捕获):
a$ED5wQChpxzagbvhlqEqD2.iIdIKv9ddvJcX0WKrQzSOckgc3RHFLW
BCrypt 为相同的输入生成不同的盐。 Bcrypt Algorithm
BCrypt returns 每次不同的散列,因为它将不同的随机值合并到散列中。这被称为 "salt"。它可以防止人们使用 "rainbow table"
、预先生成的 table 将密码哈希映射回他们的密码来攻击您的哈希密码。盐意味着密码没有一个散列,而是 2^16
个。
我们可以用普通字符串检查散列如下
Boolean isMatch = passwordEncoder().matches(currentPassword,dbPassword);
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}