首先记得SCryptPasswordEncoder 是采用的hash算法,那么hash算法都有哪些特点呢?
1、快
2、不可逆
3、相同的数据经过hash,得出的值是相等的
加密的过程
假如我的密码是123456,加一个随机数(78),密码+随机数做hash运算得到aaaaaaa,并把随机数跟到计算出的hash后面,然后存到数据库,最终的值就是aaaaaaa78
用户下一次请求登录,有username和password,我根据username拿到password:aaaaaaa78,拿到password之后就可以拿到随机数(78)和hash值(aaaaaaa),随机数+用户这次请求的密码做计算hash计算,如果相等则说明密码正确
最后比较的不是数据库中的密码一致,而是通过解析获取hash及随机数,再对用户请求的密码进行加密,判断hash值是否一样