我正在努力学习散列和密码验证,我被告知要使用模块passlib
和pbkdf2
。
我被推荐的代码是:
要散列:
from passlib.hash import pbkdf2_sha256
hash = pbkdf2_sha256.hash("password", rounds=20000, salt_size=16)
要进行身份验证:
from passlib.hash import pbkdf2_sha256
pbkdf2_sha256.verify("password", hash)
我想我理解这里的所有代码,除了一件事,任何给定密码的散列将存储在哪里,主要是如何输入我要验证的密码, 我试过用
password = input("Enter a password here: ")
自从我试着打印散列后,它就起作用了,每次我输入相同的密码,我都得到相同的散列,所以到目前为止,一切都正常。你知道吗
现在,我尝试重新设置密码,通过一个新的输入,然后在它后面有身份验证码,认为我已经设置了密码作为一个新的值,我应该能够得到一个假值每次我输入的密码不匹配的第一个输入,然而,那里,无论第二次输入,返回真
这是完整的代码
from passlib.hash import pbkdf2_sha256
password = input("Enter a password:")
hash = pbkdf2_sha256.hash("password", rounds=20000, salt_size=16)
print(hash)
password = input("please enter your password:")
print(pbkdf2_sha256.verify("password", hash))
然后我尝试将第二个密码设置为“password2”,结果总是返回false。你知道吗
您正在散列并验证文本“password”,而不是散列并验证输入。对变量名进行细微更改,使其更清楚需要更改的内容:
相关问题 更多 >
编程相关推荐