我在保存到数据库之前使用下面的代码片段来加密用户密码。
from pbkdf2 import crypt
pwhash = crypt(password_from_user)
示例:$p5k2$$Y0qfZ64u$A/pYO.3Mt9HstUtEEhWH/RXBg16EXDMr
然后,我将其保存在数据库中。在本地,我可以执行检查做这样的事情:
from pbkdf2 import crypt
pwhash = crypt("secret")
alleged_pw = raw_input("Enter password: ")
if pwhash == crypt(alleged_pw, pwhash):
print "Password good"
else:
print "Invalid password"
但是如何对db上的内容执行检查,因为加密字符串并不总是相同。我正在使用python-pbkdf2。
答案 0 :(得分:1)
pwhash = crypt("secret",iterations=1000)
可以生成类似$p5k2$3e8$her4h.6b$.p.OE5Gy4Nfgue4D5OKiEVWdvbxBovxm
并且要验证用户何时想要使用相同的密码登录,我使用以下功能:
def isValidPassword(userPassword,hashKeyInDB):
result = crypt(userPassword,hashKeyInDB,iterations = 1000)
return reesult == hashKeyInDB #hashKeyInDB in this case is $p5k2$3e8$her4h.6b$.p.OE5Gy4Nfgue4D5OKiEVWdvbxBovxm
如果密码相同,此方法将返回True
,否则返回False
。