前几天用Express开发了一个小项目。在开发登录注册模块时,我使用了bcryptjs对密码进行了加密。我总结了内容:在Express下使用bcryptjs的步骤:1、安装bcryptjs模块npminstallbcryptjs--save2。当需要加密时在模块中引入bcryptjs库varbcrypt=require('bcryptjs');3.设置加密强度varsalt=bcrypt.genSaltSync(10);4.注册时生成一个HASH值,插入到数据库中){//获取前端传过来的参数varparam=req.query||req.params;/*生成HASH值*/varhash=bcrypt.hashSync(param.pwd,salt);//建立连接并添加一个新用户connection.query(userSQL.insert,["",hash,param.phone,"","","",0],function(err,result){res.send(result);//释放连接connection.release();});});});5.登录时校验HASH值,插入数据库{//获取首页传来的参数varparam=req.query||req.params;//建立连接根据手机号查找密码connection.query(userSQL.getPwdByPhoneNumber,[param.phone],function(err,result){if(bcrypt.compareSync(param.pwd,result[0].password)){res.send("1");}connection.query(userSQL.updateLoginStatusById,[1,result[0].id],function(err,result){});}else{res.send("0");}//释放连接connection.release();});});});以上是bcryptjs的同步用法,下面介绍异步用法:生成哈希密码:bcrypt.genSalt(10,function(err,salt){bcrypt.hash("B4c0/\/",salt,function(err,hash){//将哈希存储在你的密码数据库中。});});密码验证:bcrypt.compare("B4c0/\/",hash).then((res)=>{//res===true});
