场景:需求是要把登录时候的密码加密,不允许用户在浏览器F12和类似Fiddler之类的抓包工具抓包获取用户登录的密码参数
解决办法和思路:使用md5加密
用户注册时将加密后的密码发送给后端存储
当登陆的时候,再将加密后的密码和数据库中加密的密码相匹配。
此加密无须解密
md5介绍
md5加密
MD5(单项散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。
MD5功能:
输入任意长度的信息,经过处理,输出32位的信息;
不同的输入得到的不同的结果(唯一性)
根据32位的输入结果不可能反推出输入的信息(不可逆)
前端使用md5加密
安装:
npm install js-md5 -D
在页面中使用:
import md5 from “js-md5”
代码:
// 加盐
console.log(md5(salt + '1234567890') );
// 不加盐
console.log( md5('1234567890') );
加盐加密:
加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做”盐“(salt)的n位随机数相关联
在尝试自己破解的过程中发现简单的密码md5加密可以被破解,这样会导致加密失败,所以使用加盐(salt)加密处理
密码+盐 一起加密形成密文,这样就算密码是弱密码,一起组成就是复杂的密码了。
由于使用加盐值以后的密码相当的安全,即便是获得了其中的salt和最终密文,破解也是一个耗费相当多时间的过程,可以说是破解单纯MD5的好几倍