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