koa [6] 密码加密(kocom密码锁使用说明)
密码加密
我们之前存入数据库中的密码是没有经过加密的。这篇文章我们对密码进行一下加密处理。其实如果要求不是很高的话,可以使用md5进行加密。
我们这里使用另一个库bycrptjs,???? 是bycrptjs,在npmjs官网还有一个bycrpt,二者区别是bycrptjs进过了c++的编译。不需要其他的依赖,而bycrpt需要其他依赖。
最好对应项目代码进行学习:持续更新中
bycrptjs
npmjs中 bycrptjs 相关内容
安装
npm i bycrptjs 复制代码
文档
可以看到它分为同步 和 异步。To hash a password:生成密码。To check a password:去验证这个生成的密码
这段生成密码的代码中 genSaltSync 方法,我们称它为 “加盐”。 它的加密方式大概是:
[密码:abc]-加上字符->[123abc]-通过算法加密一次->[具体变成什么样我们看不到]--再进行加盐--> 下面参数中的10就是进行了十次的加盐。
var bcrypt = require('bcryptjs'); var salt = bcrypt.genSaltSync(10); var hash = bcrypt.hashSync("B4c0//", salt) 复制代码
写到哪里?
按照我们的封装,在user.router.js中经过校验之后才会进入到register,因此我们想要加密就需要在进入register前,进行加密。我们将加密也写到 处理中间件的文件中 :user.middleware.js
user.route.js
const {userValidator,verifyUser,cryptPassword} = require('../middleware/user.middleware') // 注册接口 先交给userValidator去验证,验证通过再交由register router.post('/register',userValidator,verifyUser,cryptPassword,register) 复制代码
user.middleware.js
const cryptPassword = async (ctx, next) => { // 解构出密码 const {password} = ctx.request.body const salt = bcrypt.genSaltSync(10) // 保存的是密文 const hash = bcrypt.hashSync(password,salt) ctx.request.body.password = hash await next() } // 导出 module.exports = { userValidator, verifyUser, cryptPassword } 复制代码
然后我们测试一下,注册一个新用户
可以看到数据库的相应数据第密码已经经过了加密处理
密码的解密我们在下一篇文章再说,也就是在登录时进行解密。
伪原创工具 SEO网站优化 https://www.237it.com/
作者:csdn来挖墙脚
链接:https://juejin.cn/post/7035460395921834020