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