下载依赖:npm i bcrypt
用户的密码在数据库当中不能以明文的形式进行存储,需要进行加密处理
加密方法:
密码中混入一段“随机”的字符串再进行哈希加密,这个被字符串被称作盐值。
为什么要加盐:同一个密码经过哈希算法后得到的密码是一致,攻击者可以通过建立一个密码和哈希机密后的表的对应关系的表提高破解效率。
如果加盐,这使得同一个密码每次都被加密为完全不同的字符串。为了校验密码是否正确,我们需要储存盐值。通常和密码哈希值一起存放在账户数据库中,或者直接存为哈希字符串的一部分。
1.生成盐值:
//genSalt用来生成随机字符串,参数代表字符串的复杂度
const salt = await bcrypt.genSalt(10);
2.密码用盐值加密
const result = await bcrypt.hash('123456',salt);
3.密码比对
const flag = await bcrypt.compare('123456',result);
完整代码,代码写在async异步函数当中
async function run(){
const salt = await bcrypt.genSalt(10);
console.log(salt);
const result = await bcrypt.hash('123456',salt);
console.log(result);
const flag = await bcrypt.compare('123456',result);
console.log(flag);
}
第一个就是盐值,第二个就是加密后的字符串,第三个就是比较结果