node.js - Argon2 验证始终返回 True
问题描述
我正在将 argon2 与 nodejs 一起使用,并且正在尝试验证密码:
global.user = [{username:"u1", password:"hidden"}];
// run the password in the argon2 hashing alg
const signup = async function(password) {
// hash password using argon2i (mainly for passwords)
var key = await argon2.hash(password, {
type: argon2.argon2i,
timeCost: 200,
hashLength: 128,
});
return key;
}
var k = signup(req.body.password);
k.then(function(result) {
console.log(result);
global.user.push({username:req.body.username, password:result})
res.json(global.user);
})
var success = false;
if(argon2.verify(item.password, "meow")) {
console.log(req.body.password);
console.log(item.password);
success = true;
}
argon2.verify() 无论我将哈希与什么进行比较,总是返回 true,但我不确定为什么。
解决方案
这是因为argon2.verify
返回一个 Promise,当隐式转换为布尔值时,它是 true。改为使用await argon2.verify
。
推荐阅读
- powershell - 在powershell命令中连接字符串和表达式结果
- python - 没有数组或函数的帕斯卡三角形的简单代码?
- java - 如何使用流和 1.8 函数连接 2 个列表?
- html - CSS Grid 中的元素拉伸
- vue.js - vee-validate 的 Vue-i18n 集成无法按照文档中的说明工作
- vue.js - Vue Watch 不会在页面刷新/重新加载时触发
- git - 卡在 git rebase ... 如何重置
- image-processing - CNN 之前的图像增强有用吗?
- yii - 关系两个数据库并加入yii2
- python - 手写文本识别(CNN + LSTM + CTC)RNN解释需要