Bcrypt介绍
Bcrypt是单向Hash加密算法,类似Pbkdf2算法 不可反向破解生成明文。
在node中的使用
// npm bcrypt
// 导入bcrypt
const bcrypt = require('bcrypt');
async function run () {
// 生成随机字符串
// genSalt方法接收一个数值作为参数
// 数值越大 生成的随机字符串复杂度越高
// 数值越小 生成的随机字符串复杂度越低
// 默认值是 10
// 返回生成的随机字符串
const salt = await bcrypt.genSalt(10);
// 对密码进行加密
// 1. 要进行加密的明文
// 2. 随机字符串
// 返回值是加密后的密码
const result = await bcrypt.hash('123456', salt);
console.log(salt);
console.log(result);
}
run();
//如何进行验证呢?
//第一个参数是原始密码
//第二个参数是bcrypt加密后的密码
//两个参数进行校验 如果一致则放回true 否则返回 false
const pwdMatchFlag =bcrypt.compareSync(password, mypassword);
genSalt: 正数,代表hash杂凑次数,数值越高越安全,默认10次。
salt: 盐,一个128bits随机字符串,22字符
Hash: 经过明文密码password和盐salt进行hash,循环加盐hash10次,得到result结果
经过bcrypt加密的是无法直接解密的,因为bcrypt是单向hash算法,所以即便是黑客拿到bcrypt也很难破解