使用Bcrypt對密碼進行加密與解密驗證


Bcrypt是一個跨平台的文件加密工具。

為了保護用戶的明文密碼不被泄露,一般會對密碼進行單向不可逆加密——哈希。

而Bcrypt恰恰就做到這一點,通過Bcrypt加密的明文密碼即使解密也不是真的“解密”,哪怕是內部人員,也不會看到密碼。

這大大的提高了用戶的安全級別。那么怎么使用呢?這里我用node的項目演示。

 

首先引入Bcrypt

yarn add bcrypt

 

 

這是一個用戶注冊時輸入的密碼

if (isSigned) {
    res.render('user', {
      ret: true,
      data: JSON.stringify({
        msg: '用戶名已經存在!'
      })
    })
  // 當用戶沒有注冊時,首先將密碼加密,再將用戶名和加密后的密碼入庫
  } else {
    let result = await userModel.signup({
      username,
      password: await _doCrypto(password)
    })
  }

//將從前端接受到的password進行加密
const _doCrypto = (password) => {
  return new Promise((resolve) => {
  //這里的salt值,每次都是不一樣的,也是根據取到不同的salt,所以每次的加密結果都不一樣 bcrypt.genSalt(
10, function (err, salt) { bcrypt.hash(password, salt, function (err, hash) { resolve(hash) }); }); }) }

 

 

登錄時我們可以這樣進行驗證

//密碼認證
let isCorrect = await _comparePwd(password, result.password)

//通過_comparePwd方法將用戶輸入的明文與數據的加密過的進行比對
const _comparePwd = (fromUser, fromDatabase) => {
  return new Promise((resolve) => {
    bcrypt.compare(fromUser, fromDatabase, (err, res) => {
      resolve(res)
    })
  })
}

 

 

為了系統的安全性與用戶的體驗,使用bcrypt加密工具還是必不可少的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM