How to resolve this "TypeError: pchstr must contain a $ as first char" from node-argon2?
How to resolve this "TypeError: pchstr must contain a $ as first char" from node-argon2?
我在尝试验证密码时遇到了类型错误。哈希函数工作正常,但验证不行!
这是哈希结果:
$argon2i$v=19$m=4096,t=3,p=1rKV3QWX0Y8GQ7ChOgVIRw$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 必须包含 $ 作为第一个字符。 argon2 生成的散列的每个编码表示都有其第一部分是正在使用的 Argon2 的变体,在您的情况下是 argon2i。您的 candidatePassword
可能没有将“$”作为第一个字符,即使有,您也会遇到其他问题。这是一个开始!
如果您更仔细地注意 npm package 中的代码示例,您会注意到它是
argon2.verify("<big long hash>", "password")
而不是
argon2.verify("password","<big long hash>")
正如你所做的那样。
TLDR:交换您的参数以匹配 argon2.verify
的参数。
我在尝试验证密码时遇到了类型错误。哈希函数工作正常,但验证不行!
这是哈希结果:
$argon2i$v=19$m=4096,t=3,p=1rKV3QWX0Y8GQ7ChOgVIRw$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 必须包含 $ 作为第一个字符。 argon2 生成的散列的每个编码表示都有其第一部分是正在使用的 Argon2 的变体,在您的情况下是 argon2i。您的 candidatePassword
可能没有将“$”作为第一个字符,即使有,您也会遇到其他问题。这是一个开始!
如果您更仔细地注意 npm package 中的代码示例,您会注意到它是
argon2.verify("<big long hash>", "password")
而不是
argon2.verify("password","<big long hash>")
正如你所做的那样。
TLDR:交换您的参数以匹配 argon2.verify
的参数。