简单来说
前端:密码+盐(在密码的头或尾或中间插入),MD5,传输加密后的密码
后端:收到加密后的密码,存入数据库/与数据库中数据比较
1.需求分析
为什么不能直接用MD5哈希函数:容易受到碰撞攻击(collision attack)和彩虹表攻击(rainbow table attack)的影响
在前端,用户点击登录和注册时,在登录和注册接口中不允许看到请求中真正的用户密码。
在后端,用户点击登录和注册时,在数据库中不允许存取真正的用户密码。
2.加密方式
前端加密+后端加密
前端加密+后端不加密
前端不加密+后端加密(x)
3.加密过程
4.两次加密
一般都会使用随机字符串作为盐值,比如用户id作为随机种子。
前端生成盐值,在登录和注册时会和加密的密码一同传递给后端
后端接收后,会使用对应盐值对密码做二次加密,以及将盐值存到数据库中。