gpt4 book ai didi

javascript - Bcrypt python 脚本和 JavaScript 与 MongoDB/Mongoose 不适用于两个单独的项目

转载 作者:行者123 更新时间:2023-12-01 01:46:02 24 4
gpt4 key购买 nike

好的,我有一个 python 脚本,可以执行此操作来创建一个特殊帐户:

salt = bcrypt.gensalt(10)
password = (bcrypt.hashpw(password.encode("utf-8"), salt)).decode("utf-8")
pin = (bcrypt.hashpw(pin.encode("utf-8"), salt)).decode("utf-8")

然后我将其存储在 Mongodb 中,如下所示:

data = {
'username' : username,
'password' : password,
'pin' : pin,
'created' : t,
'last_log' : t,
'num_fails': 0,
'systemWidePassword' : '[REDACTED]'
}
result = admins.insert_one(data)

如果我检查 mongo,一切都在那里。

我有一个 Mongoose 方法,使用 bcrypt 和以下代码行检查 PIN 和密码:

const [pinMatch, passMatch] = await Promise.all([
bcrypt.compare(attemptPin, this.pin),
bcrypt.compare(attemptPass, this.password)
]);

出于某种原因,我的 passMatch 每次(使用正确的密码)计算结果为 true,但是我的 pinMatch 值在使用正确的 pin 时始终为 false。 为什么一个可以工作,而另一个却总是失败?所有字段都作为字符串处理。

最佳答案

这个解决方案非常出人意料。显然 bcrypt 和“$”符号存在问题。这会导致生成的带有“$”符号的密码导致哈希不匹配。在收到将通过 bcrypt 运行的任何内容的输入后,我将以下内容添加到 python 脚本中:

def checkBcryptString(self, item):
return item.find('$')

然后,如果它返回True,我接受,如果返回False,它会递归地请求该项目。

关于javascript - Bcrypt python 脚本和 JavaScript 与 MongoDB/Mongoose 不适用于两个单独的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com