项目 两次MD5

第一次 (在前端加密,客户端):密码加密是(明文密码+固定盐值)生成md5用于传输,目的,由于http是明文传输,当输入密码若直接发送服务端验证,此时被截取将直接获取到明文密码,获取用户信息。

加盐值是为了混淆密码,原则就是明文密码不能在网络上传输。

第二次:在服务端再次加密,当获取到前端发送来的密码后。通过MD5(密码+随机盐值)再次生成密码后存入数据库。

防止数据库被盗的情况下,通过md5反查,查获用户密码。方法是盐值会在用户登陆的时候随机生成,并存在数据库中,这个时候就会获取到。

第二次的目的:
黑客若是同时黑掉数据库,通过解析前端js文件,知道如果md5加密的过程,就知道此时用户的密码。

但是此时我们要是在后端加入随机盐值和传输密码的md5组合,黑客是无法知道通过后端密码加密过程的,从而无法知道密码。

整体加密流程
MD5(MD5(pass明文+固定salt)+随机salt) 
第一次固定salt写死在前端 
第二次加密采用随机的salt 并将每次生成的salt保存在数据库中

登录流程:
前端对用户输入的密码进行md5加密(固定的salt) 
将加密后的密码传递到后端 
后端使用用户id取出用户信息 
后端对加密后的密码在进行md5加密(取出随机salt),然后与数据库中存储的密码进行对比, 
ok登录成功,否则登录失败
 

猜你喜欢

转载自blog.csdn.net/weixin_39590058/article/details/87966006