我如何加密用户登录密码除了BCryptPasswordEncoder。假设我没有使用这个依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
mftmpeh81#
BCryptPasswordEncoder只是另一个编码器。Spring提供了许多这样的编码器的实现。你可以使用不同的单向哈希算法的实现,如SHA-256,SHA-512等。Java在java.security包中提供了相同的实现。检查java.security.MessageDigest类。使用类似BCryptPasswordEncoder的编码器的一个好处是你不需要自己生成随机密码salt。它会处理这个问题,并隐式使用随机salt,这就是为什么每次对相同的纯文本生成不同的编码字符串。
BCryptPasswordEncoder
java.security
java.security.MessageDigest
nx7onnlm2#
经过搜索,我发现最好的做法是使用编码器,因为Chetan Ahirrao说。我发现的解决方案是添加
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-crypto</artifactId> <version>5.7.3</version> </dependency>
并使用B加密密码编码器
@Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(10); }
2条答案
按热度按时间mftmpeh81#
BCryptPasswordEncoder
只是另一个编码器。Spring提供了许多这样的编码器的实现。你可以使用不同的单向哈希算法的实现,如SHA-256,SHA-512等。Java在java.security
包中提供了相同的实现。检查java.security.MessageDigest
类。使用类似
BCryptPasswordEncoder
的编码器的一个好处是你不需要自己生成随机密码salt。它会处理这个问题,并隐式使用随机salt,这就是为什么每次对相同的纯文本生成不同的编码字符串。nx7onnlm2#
经过搜索,我发现最好的做法是使用编码器,因为Chetan Ahirrao说。我发现的解决方案是添加
并使用B加密密码编码器