bcrypt是一种不可逆的加密算法,无法通过解密密文得到明文。
推荐看官方文档,因为版本更新
npm install bcryptjs
var bcrypt = require('bcryptjs')
// 【同步加密和验证】
// 随机字符串
var salt = bcrypt.genSaltSync(10)
// 对明文加密
var pwd1 = bcrypt.hashSync('123456', salt)
// 验证比对,返回布尔值表示验证结果 true表示一致,false表示不一致
var isOk = bcrypt.compareSync('123456', pwd1)
// 【异步加密和验证】
// 随机字符串
bcrypt.genSalt(10, (err, salt) => {
// 对明文加密
bcrypt.hash('123456', salt, (err, pwd) => {
console.log(pwd)
// 验证
bcrypt.compare('123456', pwd, (err, isOk) => {
console.log(isOk)
})
})
})
所有的 bcrypt返回值都是一个promise对象
// 导入 bcrypt
const bcript = require('bcryptjs');
async function run() {
// 生成随机字符串
// genSalt方法接收一个数值作为参数
// 数值越大 生成的随机字符串复杂度越高
// 数值越小生成的随机字符串复杂度越低
// 默认值是10
// 返回生成的随机字符串
const salt = await bcript.genSalt(10);
// 对密码进行加密
// 1. 要进行加密的明文
// 2. 随机字符串
// 返回值值加密后的密码
const result = await bcript.hash('123456', salt);
console.log(salt);
console.log(result);
}
run()
// 将客户端传递过来的密码和用户信息中的密码进行比对
// true 比对成功
// false 比对失败
let isvalue = await bcrypt.compare(password, user.password)