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

Bcrypt是一個跨平臺的文件加密工具。前端

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

而Bcrypt偏偏就作到這一點,經過Bcrypt加密的明文密碼即便解密也不是真的「解密」,哪怕是內部人員,也不會看到密碼。安全

這大大的提升了用戶的安全級別。那麼怎麼使用呢?這裏我用node的項目演示。工具

 

首先引入Bcrypt加密

yarn add bcrypt

 

 

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

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) }); }); }) }

 

 

登陸時咱們能夠這樣進行驗證code

//密碼認證
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加密工具仍是必不可少的blog

相關文章
相關標籤/搜索