为了保证密码的安全性,不建议在数据库以 明文
的形式保存用户密码,推荐对密码进行 加密存储。
1.在所需项目中,使用 bcryptjs
对用户密码进行加密,优点:
- 加密之后的密码,无法被逆向破解
- 同一明文密码多次加密,得到的加密结果各不相同,保证了安全性
2.安装并配置 bcryptjs
bcryptjs详见 : bcryptjs - npm
2.1 在所需项目文件中打开终端写入下面命令安装
npm i bcryptjs
2.2 导入 bcryptjs
const bcrypt = require('bcryptjs');
2.3 同步进行加密及认证
//【同步】
// 赋值随机字符串
// 数值越大 生成的随机字符串复杂度越高
// 数值越小 生成的随机字符串复杂度越低
var salt = bcrypt.genSaltSync(10);
// 对明文加密
var pass = bcrypt.hashSync('123456', salt);
// 验证比对是否正确,返回布尔值表示验证结果 true表示一致,false表示不一致
var isTrue = bcrypt.compareSync('123456', pass);
console.log(pass);
console.log(isTrue);
加盐 ; 盐不同 , 加密出来的密文也不一样 ;多次对同一个明文加密, 加密出来的密文是不一样的 .
2.4异步进行加密及认证
//【异步加密认证】
//赋值随机字符串
// 数值越大 生成的随机字符串复杂度越高
// 数值越小 生成的随机字符串复杂度越低
bcrypt.getSalt(10,(err,salt)=>{
//对明文进行加密
bcrypt.hashSync('123456',salt,(err,pass)=>{
console.log(pass);
//验证比对是否正确
bcrypt.compare('123456',pass,(err,isTrue)=>{
console.log(isTrue);
})
})
})