Security源码接口PasswordEncoder不同版本的用法

PasswordEncoder是一个加密接口,新老版本放的包路径不一样,新版本方法名简化,对老版本已经弃用。

老版本类路径:org.springframework.security.authentication.encoding.PasswordEncoder

接口定义了两个方法,encodePassword()方法是对原始密码进行加密,采用hash+salt方式,在方法中应用系统得提供盐值(salt)。isPasswordValid()方法是用来验证密码是否正确的,得提供三个参数,加密后的密码、原始密码以及盐值(salt)。缺点就是每次加密和解密都得提供盐值,加密后的密码是固定的,而且接口实现复杂,存在多继承和实现。

Security源码接口PasswordEncoder不同版本的用法_第1张图片

新版本类路径:org.springframework.security.crypto.password.PasswordEncoder

接口定义了两个方法,encode方法是对方法加密,入参只有原始密码,而且每次获取的加密后的密码不一样;而match方法是用来验证密码和加密后密码是否一致的,如果一致则返回true。优点盐值不用用户提供,每次随机生成,多重加密——迭代SHA-256算法+密钥+随机盐来对密码加密,大大增加密码破解难度,而且接口实现简单,不存在多继承。 

Security源码接口PasswordEncoder不同版本的用法_第2张图片

你可能感兴趣的:(Spring)