BCryptPasswordEncoder这个方法来源于spring-security这个安全框架,他的主要有优点是,比起传统的MD5加密方式, 他更加的安全,暴力破解的难度更加的大,相同的明文可以生成不同的密文
1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.在启动类中加入
@Bean
public BCryptPasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
3. 引入security的jar包后,会自动生成一套登录权限,就是一个登录页面,启动的时候控制台会刷出一条password,账号默认是user,在不用这套权限框架的情况下,可以在启动类中加入以下注解,关掉权限验证
@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class })
4.测试流程
注入实现类
@Autowired
private BCryptPasswordEncoder passwordEncoder;
//生成密码
@PostMapping("genPassWord")
public String genPassWord(@RequestBody Map<String, String> param) {
String jmpwd=passwordEncoder.encode(param.get("pwd"));
return Result.succeed(jmpwd, StringConstant.OPER_SUCCESS_MSG);
}
//生成密码
@PostMapping("testPassWord")
public String testPassWord(@RequestBody Map<String, String> param) {
boolean flag=passwordEncoder.matches(param.get("pwd"),param.get("jmpwd"));
return Result.succeed(flag, StringConstant.OPER_SUCCESS_MSG);
}
192.168.8.12:28073/order/genPassWord
{"pwd":"123456789"}
192.168.8.12:28073/order/testPassWord
{"pwd":"123456789","jmpwd":"$2a$10$tMuFBU4mYKfHpPOjIl7uG.KcXsSoZ2R3vgTc2rZJbA8VyrE9UecEW"}
同样的明文123456789,生成的密文各不相同
$2a$10$/GtzWl/YaMWtYs.v6eJazu.4QVkVAoCYWWVRa1RbklxLiUMQBWZpa
$2a$10$tMuFBU4mYKfHpPOjIl7uG.KcXsSoZ2R3vgTc2rZJbA8VyrE9UecFq
$2a$10$D3fNjCTsyiYSasKXLsSGbu/QtQm4BIGfqwG5VuqlAExHaQUxDsUEm
$2a$10$ZYifiprUdycNOqjzqqvbSOLSvgAhtJfjxUlKmYAQbWyjVXNqhOHL2
这就达成了咱们的预期目的