密码传输加密:MD5加盐

483 阅读1分钟

简单来说

前端:密码+盐(在密码的头或尾或中间插入),MD5,传输加密后的密码
后端:收到加密后的密码,存入数据库/与数据库中数据比较

1.需求分析

为什么不能直接用MD5哈希函数:容易受到碰撞攻击(collision attack)和彩虹表攻击(rainbow table attack)的影响
在前端,用户点击登录和注册时,在登录和注册接口中不允许看到请求中真正的用户密码。
在后端,用户点击登录和注册时,在数据库中不允许存取真正的用户密码。

2.加密方式

前端加密+后端加密
前端加密+后端不加密
前端不加密+后端加密(x)

3.加密过程

image.png

4.两次加密

一般都会使用随机字符串作为盐值,比如用户id作为随机种子。
前端生成盐值,在登录和注册时会和加密的密码一同传递给后端
后端接收后,会使用对应盐值对密码做二次加密,以及将盐值存到数据库中。

5.验证输入的密码是否和数据库中相同

比较加密后的哈希值,而不是直接比较密码