PasswordEncoder接口
Springsecurity框架提供了 PasswordEncoder接口,此接口提供了三者方法:
Bcryptpassword实现了PasswordEncoder接口
它实现的加密算法是一种自带盐值(自动加盐)的加密方案,即在给密码加密过程中,拼接随机的盐值,再进行hash算法加密。
盐
盐是一组随机的安全值
加密过程(encode()方法)
1:先随机生成salt
2:salt跟password进行hash
注意
对于同一个密码,由于随机盐的不同,每次生成的hash是不同的
生成的hash中包含了salt,后续进行校验需要从hash密文中取出salt值
校验过程(matches(密文,明文)方法)
1:从hash中取出salt
2:salt跟password进行hash计算
3:将得到的hash跟数据库中提取的的hash进行比对返回Boolean类型:true/false