【发布时间】:2021-06-08 04:15:48
【问题描述】:
出于身份验证的目的,当我尝试比较相同字符串的密码时,我将哈希密码存储在 MongoDB 中,bcryptjs 会抛出空值。
它以二进制形式存储字符串“123”的哈希密码。 这是我的生成代码
import bcrypt
salt = bcrypt.gensalt()
password = bcrypt.hashpw(request.form['password'].encode('utf-8'), salt)
当我尝试将此与用户输入的密码“123”进行比较时,我得到一个空值。
123 $2b$12$URN6pyD4SsOgIXALvr.jIuy2hvxlxva.ioamDNtMhAwvWb9/nLdhO null
这是我使用 bcryptjs 的 nodejs 代码,用于比较用户密码和散列数据库密码
userSchema.methods.comparePassword = function (passw, cb) {
var user = this;
console.log((passw === user.password) ? 'passwords match' : 'passwords dont match' );
console.log(passw +" "+ user.password )
bcrypt.compare(passw, user.password, function (err, isMatch) {
console.log(passw +" "+ user.password +" " +isMatch )
if(err) {
return cb(err)
}
cb(null, isMatch)
})
}
即使我输入了相同的字符串“123”,我也会得到一个空值如果我尝试使用这个在线 bcryptchecker 网站https://bcryptgenerator.com/ 进行检查,我会得到一个匹配项。我到底在做什么错?有人能指出我的错误吗?
【问题讨论】:
-
用于生成我正在使用 python bcrypt 并将其保存在数据库中并检查我正在使用 bcrypt 比较。检查编辑的问题
标签: javascript python node.js hash bcrypt