所以我回到旧项目上工作,我发现什么都不对。 这是首次创建密码的部分,这是来自主脚本:
def first():
if os.path.isfile("secret.txt"):
folder()
else:
os.system("echo > secret.txt")
password = getpass.getpass("Set your password please --> ")
while len(password) < 4:
print("Password must have more then 4 characters!")
else:
password1 = getpass.getpass("repeat your password please --> ")
while password1 != password:
print("Password don't match")
password1 = getpass.getpass("repeat your password please --> ")
if password1 == password:
a = open('secret.txt', 'w').close()
f = open('secret.txt', 'w')
hashed_password = pbkdf2_sha256.hash(password)
f.write(hashed_password)
os.system("attrib +h secret.txt")
folder()
这是登录脚本,从这里检查密码:
def log_in():
f = open("secret.txt", "r")
Password = f.read()
x = 0
while x < 5:
getPass = getpass.getpass("Password:")
if not pbkdf2_sha256.verify("getPass", Password):
print("Password is invalid")
x = x + 1
else:
f.close()
os.system('cls')
print("Welcome back sir\n")
x = 10
time.sleep(2)
if x == 5:
print("acces denied")
time.sleep(5)
os.system("nothing.bat")
所以问题是当我尝试验证密码时说它不正确但密码是相同的。在文档中它说:
请注意,由于每次调用都会生成一个新的salt,因此调用之间的结果内容会有所不同(尽管使用与输入相同的密码):
如果这是.verify()的问题,那我该怎么办?
我不确定这是否足够的信息,如果不是,我会发布完整的源代码
我可能错过了一些愚蠢的事情,但我似乎无法找到它..
答案 0 :(得分:0)
我认为问题是:
if not pbkdf2_sha256.verify("getPass", Password):
将其更改为:
if not pbkdf2_sha256.verify(getPass, Password):
你已经打电话给str&#34; getPass&#34;不是用户输入的密码。