1. 程式人生 > >使用Bcrypt對密碼進行加密與解密驗證

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

文件加密 omd pwd sign nbsp lse 結果 即使 yar

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加密工具還是必不可少的

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