该模块为加密模块:
- 加密方式:哈希加密(hash)。
- 哈希加密是单程加密方式,只可以加密,不可以解密。
注意:
- 该方法都是异步API,需要使用 await 来等待一下,不要忘记 await 需要配合 async 使用哦!!
0x01 密码加密步骤:
1、首先下载bcrypt这个库。
npm install bcrypt
2、然后导包。
const bcrypt = require("bcrypt");
3、使用 genSalt()
方法 生成 ‘盐’。
- 参数:
- 加密复杂程度,越大越复杂。默认为:10,当然,越大也越慢。
let salt = await bcrypt.genSalt(10);
4、使用 hash() 方法对密码进行加密。
第一个参数:
- 用户输入的明文密码。
第二个参数:
- 使用 genSalt() 生成的 ‘盐’ 。
let pass = await bcrypt.hash("明文密码", salt);
0x02 密码比对:
- 虽然不能解密,但是它提供了一个密码比对的方法,可以判断密码输入的是否正确。
方法:
await bcrypt.compare('明文密码', '加密密码');
明文密码就是用户现在输入的密码。
加密密码是从数据库中读取出来的已经被加密的密码。
返回值:
- 返回一个 Boolean 值。
- 比对正确:true
- 比对错误:false
//查询数据库 User.findOne({ //只查询用户输入的账号 account: req.body.account }) //由于 bcrypt.compare 使用了await,所以这里使用async。 .then(async function(ret){ //判断查询返回的是否是null,如果是null就是没有数据,那么返回账号密码错误。 if(ret){ //如果返回的对象,就是存在,然后密码比对,返回 Boolean 值。 if(await bcrypt.compare(req.body.password, ret.password)){ //返回true说明比对成功 res.send({ message: "登录成功!", code: 0 }); //返回 false 说明比对失败,返回账号密码错误 }else{ res.send({ message: "账号或密码错误!", code: 1 }); } }else{ res.send({ message: "账号或密码错误!", code: 1 }); } });
版权声明:《 node.js - bcrypt模块 》为Jack.甄原创文章,转载请注明出处!
最后编辑:2021-8-17 17:08:47