react 项目--博客系统 (十二)

Loading......

接前几篇博客,我们搭建了服务器环境、数据库环境、model、中间件等等,以及他们的抽离进行模块化的开发,这篇文章我们将对项目添加些工具,加密及数据验证。

加密:md5 ; bcrypt ;

md5:

首先在项目中安装对应的包;在终端输入 npm i md5 --save 即可安装

我们在 src 目录下创建一个专门存放工具的文件夹 utils ;在其下创建一个 md5.js 的文件用来写加密程序;

内容如下:

之后,在终端里运行 node md5.js 进行测试,可以显示打印出 md5加密后的32位字符,并可以验证md5加密后的两份密码是否正确,并返回结果;

bcrypt :

首先还是装包;在终端 输入 npm i bcrypt --save 进行安装 ; 

如遇安装不上问题有以下两种解决方案:

方案一:先安装两种包后在进行安装

npm install -g node-gyp
npm install --global --production windows-build-tools
npm i bcrypt --save

方案二: 引用后即可正常使用

npm install bcryptjs -S
let bcrypt=require(‘bcryptjs’)

 安装完成后在 utils 下建立新文件夹 bcrypt.js ;

 之后,在终端里运行 node bcrypt.js 进行测试,可以显示打印出 hash加密后的字符,并可以验证加密后的两份密码是否正确,并返回结果;

详细代码:

md5.js

const md5 = require("md5");

const SALT = "gt";

// md5 加密
const md5Password = (password) => {
  return new Promise((resolve, reject) => {
    const md5PWD = md5(password + SALT);
    resolve(md5PWD);
  });
};

// 密码验证
const matchPassword = (oldMd5Pwd, password) => {
  return new Promise((resolve, reject) => {
    const newMd5PWD = md5(password + SALT);
    if (oldMd5Pwd === newMd5PWD) {
      resolve("true");
    } else {
      reject("false");
    }
  });
};

module.exports = md5Password;
module.exports = matchPassword;

// 测试
async function test1() {
  const password = "gt";
  const md51 = await md5Password(password);
  console.log("md51:", md51);
  const md52 = await matchPassword(md51, "gt");
  console.log("md52:", md52);
}
test1();

bcrypt.js

const bcrypt = require('bcrypt')

const SALT = 10;

// bcrypt 加密
const hashPassword = (password) => {
  return new Promise((resolve, reject) => {
    bcrypt.hash(password,SALT,(err,encrypted)=>{
        if(err){
            reject(err)
        }
        resolve(encrypted)
    })
  });
};


// 密码验证
const matchPassword = (password, oldHashPwd) => {
  return new Promise(async (resolve, reject) => {
    const match = await bcrypt.compare(oldHashPwd,password)
    console.log(match);
  });
};

module.exports = {hashPassword,matchPassword}

//测试
async function test2() {
    const pass = 'gt'
    const  hashPWD = await  hashPassword(pass)
    console.log("hashPWD:",hashPWD); 
    const match = await matchPassword(hashPWD,'gt1')
    console.log("Password matches:",match);
}

test2()

未完待续......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值