通过对认证流程源码分析得知,实际密码比较是由PasswordEncoder完成的,因此只需要使用PasswordEncoder 不同实现就可以实现不同方式加密。
public interface PasswordEncoder {
String encode(CharSequence rawPassword);
boolean matches(CharSequence rawPassword, String encodedPassword);
default boolean upgradeEncoding(String encodedPassword) {
return false;
}
}
-
encode 用来进行明文加密的
-
matches 用来比较密码的方法
-
upgradeEncoding 用来给密码进行升级的方法
默认提供加密算法如下: