我对Spring Security BCrypt有两个疑问:
关于第一个疑问,我阅读了很多教程,我发现总是相同的配置(默认)
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
那么,我可以认为这种配置是无状态的吗?我的Web服务不需要使用强项和安全随机生成默认配置的不同哈希值吗?
关于第二个疑问,Bcrypt哈希长度总是60?那么,最好在我的数据库中使用CHAR(60)或BINARY(60)吗?
答案 0 :(得分:0)
Spring Security是开源的。这是BCryptPasswordEncoder
如果你没有传递SecureRandom
它只是创建一个新的。从安全角度来看,这很好。出于性能或测试能力的原因,您可以自行传递。
如果您未通过Strength
,则使用GENSALT_DEFAULT_LOG2_ROUNDS
即10,这是相当安全的。为了安心,你可以传递这个值。
Spring Security的数据库架构为varchar(50)
列建议password
,但对于bcrypt,它看起来像60是正确的。
我在char
上使用varchar
/ binary
,因为它更容易阅读(视觉上)。