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