哈希加密是单程加密方式: 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