加盐
https://www.ucloud.cn/yun/88113.html
# 加盐
salting 密码学中的加盐是指, 通过在密码的任意固定位置插入(或替换)特定的字符串, 然后散列的结果和原始密码的散列结果不同.
# 加盐的方法
# 固定字符串加盐
就是将固定字符串加在密码的固定位置, 然后进行加密. 这种方法的缺点是, 一旦攻击者拿到源代码(都拿到数据库了还拿不到源码吗), 就能轻松构建一张新的彩虹表破解密码.
# 随机字符串加盐
盐的长度固定, 但是是随机的. 数据库在存储每位用户的密文密码的同时也存储每位用户的盐.
加密方式例如 md5(md5(passwd) + salt());
随机字符串的加盐也仅能增加破解难度, 并非无法破解. 彩虹表的数据量 = 数据库盐的数量 * 常用密码数量
# 为什么要加盐
第一阶段明文密码. 密码在数据库中以明文保存, 因此数据泄露时造成很多事故
第二阶段密文密码. 密码进行加密后再放入数据库, 比如 md5 加密, 数据库中, 密码一栏的内容就是原密码用 md5 加密后的值. 但由于彩虹表的出现, 加密后保存的密码也不再安全.
第三阶段加盐.