1、添加commons-codec依赖
<!-- 加密依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、在boot的启动类中声明。
@Bean
public BCryptPasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
3、关掉权限验证。
在boot的启动类头部加上下面这个注解就可以关掉权限验证。
@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class })
4、注入到要使用的业务中
@Autowired
private BCryptPasswordEncoder passwordEncoder;
5、使用
加密
//加密,strs要加密的字符串
String strs="test";
for (int i = 0; i < 3; i++) {
System.out.println("第"+i+"次加密:"+passwordEncoder.encode(strs));
}
输出结果:
我们可以看出虽然明文都一样,但是加密结果都是不一样的
验证明文密码和加密后的密码
//明文密码
String strs="test";
//加密过的密码,名文都是test
List<String> encodeList = new ArrayList<>();
encodeList.add("$2a$10$XHsBzIixVCQnTmGVTzQL..yNOpnGMf8hd1RUyiKCbbvJVYIb2vEp6");
encodeList.add("$2a$10$4Ri2UCscYMeBfnMuiWH0c./3Uz3kCFaddFjBq3yeQLWZOO6Ef8gKq");
encodeList.add("$2a$10$R7uwcxsGo5Ox78QAOkOltOsnCGL505NiFlpRuba4iCiS4yXYGpn82");
//其它加密后的明文密码
encodeList.add("$2a$10$ijITqdz.PAss3yQxb/iAueVP8a5W2lqUT1JrxNihpmmQXXmnhn3ry");
//验证明文密码和加密后的密码
for (int i = 0; i < encodeList.size(); i++) {
System.out.println(passwordEncoder.matches(strs,encodeList.get(i)));
}
输出结果: