哈希加密是单程加密方式: 1234 => abcd (容易爆破)
在加密的密码中加入随机字符串可以增加密码被破解的难度
// 导入bcrypt 模块
const bcrypt = require('bcrypt')
// 生成随机字符串 gen => generate 生成salt 盐
let salt = await bcrypt.genSalt(10)
// 使用随机字符串对密码进行加密
let pass = await bcrypt.hash('明文密码', salt)
bcrypt 依赖环境
1.python2.x
2.node-gyp
npm i -g node-gyp
3.windows-build-tools (Windows环境)
npm i -g --production windows-build-tools
4.bcrypt
npm i bcrypt
示例:
// 导入bcrypt
const bcrypt = require('bcrypt')
async function run () {
// 生成随机字符串
// genSalt 方法接收一个数据作为参数
// 数值越大,生成的随机字符串复杂度越高
// 默认值是10
let salt = await bcrypt.genSalt(10)
// 对密码进行加密
// 1.要进行加密的明文
// 2.随机字符串
// 返回值是加密后的密码
const result = await bcrypt.hash('123456', salt)
console.log(salt)
console.log(result)
}
run()
显示结果:
$2b$10$LZg9xeA2lUxEd0LPGso4m.
$2b$10$LZg9xeA2lUxEd0LPGso4m.dTDYsHfsZ8qvUV5qkn1nujSVRrA0qS6
密码比对:
let isEqual = await bcrypt.compare('明文密码', '加密密码')
如果密码比对成功则结果为true,比对失败则为false