Node.js: 使用哈希算法安全存储用户密码
用户密码绝不能以纯文本存储,而应该使用哈希算法哈希化后存储。bcrypt 是一种安全且广泛使用的哈希算法,可以用于实现安全存储用户密码。
安装:npm install bcryptjs
测试:
const bcrypt = require("bcryptjs");
const hashFunc = async () => {const password = 'red111';// 这里的8是bcrypt的作者推荐设置的hash计算次数,// 使用8能获得安全性和速度之间的最佳平衡。const hashedPassword = await bcrypt.hash(password, 8);// 输出:Password in plain text: red111console.log("Password in plain text: " + password);// 输出:Hashed password: $2a$08$ASlaj6HyiLK6WZNIyv0wnOdueMQVGYtXT20vd6kM6WYlcYlt67PhSconsole.log("Hashed password: " + hashedPassword);// 用户登录时,使用bcrypt.compare验证密码是否匹配。const isMatch_r = await bcrypt.compare("red111", hashedPassword);console.log(isMatch_1); // trueconst isMatch_f = await bcrypt.compare("Red111", hashedPassword);console.log(isMatch_2); // false
};
hashFunc();
加密和哈希是两个不同的概念。
加密是可逆的,即加密后的密文能解密还原成明文。
但哈希化是单向的,如上面的例子:
$2a$08$ASlaj6HyiLK6WZNIyv0wnOdueMQVGYtXT20vd6kM6WYlcYlt67PhS 无法再次通过计算得到 red111
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
