密码存储的发展史
纯文本密码存储阶段
最早期的时候,使用纯文本存储密码,不过存储密码的文件是加了密。
但是容易到SQl注入的风险。
加密算法密码存储阶段
后来使用以SHA-256为代表的HASH加密算法存储密码
不过也容易受到类似彩虹表
这样的算法的攻击。
加盐算法密码存储阶段
再到后来,以SHA-256为代表,使用加盐和Hash结合创建一个唯一的值,倒是有效避免了类似彩虹表这样的lookup tables
的攻击。
但是由于硬件的不断发展,每秒能执行上十亿次的恐怖算力,使得这种加密算发也不能再说是安全的。
自适应单项函数密码存储阶段
现在就发展了自适应单项函数的密码加密阶段,这种算法更加复杂,以至于加密验证都需要接近1s的时间。
因此,使用类似以BCryptPasswordEncoder
为代表的算法时,不得不减少我们进行加密和验密的次数 ,这也解释了为啥要使用access_tokcen
存储在session
中进行传递身份的方式进行验证。