一、背景
对于同一密码,同一加密算法会产生相同的hash值。这样,当用户进行身份验证时,对用户输入的明文密码应用相同的hash加密算法,得出一个hash值,然后使用该hash值和之前存储好的密文值进行对照,如果两个值相同,则密码认证成功,否则密码认证失败。
出于更安全的考虑,即使两个用户输入的是相同的密码,也应该要保存为不同的密文,即使用户输入的是弱密码,也需要考虑进行增强,从而增加密码被攻破的难度。因此出现了加盐加密。
加密过程(用户注册)
即:最终的密文是以下两个内容的函数:
用户输入的密码明文+盐值
最后要将以下内容存入数据库:
用户的用户名(校验用户,是查找密码的唯一值)、
最终的密文(注册时输入的密码,进行相同加密处理后生成的密文;用于以后每次登录校验密码的正确性)、
加密所用的盐值(随机字符串,每个用户每串密码对应的盐值可能不同;盐值位置可在明文密码前,也可在明文密码后,根据具体业务规则对盐值位置进行规定)
校验过程(用户登录)