Bcrypt python脚本和带有MongoDB/Mongoose的JavaScript不适用于两个单独的项目
好的,我有一个python脚本,它可以创建一个特殊帐户:Bcrypt python脚本和带有MongoDB/Mongoose的JavaScript不适用于两个单独的项目,javascript,python-3.x,mongodb,mongoose,bcrypt,Javascript,Python 3.x,Mongodb,Mongoose,Bcrypt,好的,我有一个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' :
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
I accept,并使用False
递归地请求项目 这个解决方案非常出乎意料。显然,bcrypt和“$”符号存在问题。这会导致生成的带有“$”符号的密码导致哈希不匹配的情况。在收到将通过bcrypt运行的任何内容的输入后,我在python脚本中添加了以下内容:
def checkBcryptString(self, item):
return item.find('$')
然后,如果它返回
True
I accept,并使用False
递归地请求项目 什么是bcrypt
?和password
和pin
不是字符串吗?我的模式将它们存储为字符串。编码适用于密码,bcrypt是一个用于密码哈希等的库。什么是bcrypt
?和password
和pin
不是字符串吗?我的模式将它们存储为字符串。该编码适用于密码,bcrypt是一个用于密码哈希等的库。