密码哈希和验证

时间:2018-11-15 20:20:11

标签: python python-3.x hash

我现在正在尝试学习有关密码的哈希和验证,有人告诉我使用模块passlibpbkdf2。 我被推荐的代码是:

哈希:

 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: ")

那是可行的,因为我尝试打印哈希,并且每次我输入相同的密码时,我都会得到相同的哈希,因此到那时为止,一切都正常。

现在,我尝试通过新输入重置密码,然后输入验证码,以为我已将密码设置为新值,因此每次输入密码时我都应该能够得到False值。与输入的第一个不匹配,但是,无论第二个输入如何,都返回True

这是完整的代码

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。

1 个答案:

答案 0 :(得分:0)

您正在哈希并验证文本“ password”,而不是哈希并验证输入。对变量名进行较小的更改,以使您需要更改的内容更加清楚:

from passlib.hash import pbkdf2_sha256

password_input = input("Enter a password:")
hash = pbkdf2_sha256.hash(password_input, rounds=20000, salt_size=16)
print(hash)

password_confirm = input("please enter your password:")

print(pbkdf2_sha256.verify(password_confirm, hash))