密码散列和验证

2024-09-29 00:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习散列和密码验证,我被告知要使用模块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: ")

自从我试着打印散列后,它就起作用了,每次我输入相同的密码,我都得到相同的散列,所以到目前为止,一切都正常。你知道吗

现在,我尝试重新设置密码,通过一个新的输入,然后在它后面有身份验证码,认为我已经设置了密码作为一个新的值,我应该能够得到一个假值每次我输入的密码不匹配的第一个输入,然而,那里,无论第二次输入,返回真

这是完整的代码

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。你知道吗


Tags: 代码fromimport密码inputsizepasswordhash
1条回答
网友
1楼 · 发布于 2024-09-29 00:19:57

您正在散列并验证文本“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))

相关问题 更多 >