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()
未完待续......