尝试验证密码时出现TypeError错误。哈希函数工作正常,但验证不起作用!这是哈希结果:$argon2i$v=19$m=4096,t=3,p=1$8rKV3QWX0Y8GQ7ChOgVIRw$u+UEaGhG8Rvge4TvG17gnx/6jhdmePh9s7V3aK/asXA
我使用的此验证功能:
function comparePassword(candidatePassword){
try {
return argon2.verify candidatePassword, user.password
}
catch (err) {
throw err
}
}
这是哈希函数:
try {
hash = await argon2.hash(password)
user.password = hash
next()
}
catch (err) {
next(err)
}
Archlinux GNOME版本3.34.3
NodeJS
v11.15.0 Argon2 v0.25.0
错误消息为您提供了提示:pchstr必须包含$作为第一个char。argon2生成的哈希的每个编码表示形式的第一部分都是所用Argon2的变体,在您的情况下为argon2i。您candidatePassword
可能没有以“ $”作为第一个字符,即使有,也将遇到其他问题。这只是一个开始!
如果您更仔细地注意npm包中的代码示例,您会发现它是
argon2.verify("<big long hash>", "password")
并不是
argon2.verify("password","<big long hash>")
正如您所做的。
TLDR:交换参数以匹配的参数argon2.verify
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句