python - 密码哈希和验证

标签 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。

最佳答案

您正在散列和验证文本“密码”,而不是散列和​​验证输入。对变量名称进行细微更改,使其更清楚需要更改的内容:

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

关于python - 密码哈希和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53327313/

相关文章:

python - 使用 ESCAPE ARROW 防止 Android 上的 kivy 应用退出

python - 在 Julia 中将整数数组转换为字符数组,反之亦然

python - kmeans 簇数与 k 值不匹配

java:通过哈希函数内存构造

java - 如何使用 bouncy caSTLe 在 Java 中创建 SHA512 摘要字符串?

python - 使用正则表达式 python 验证卡号

python - 如何在 Django Rest Framework 测试中强制进行身份验证

python - 删除行索引并将其恢复为列

python - Python 在搜索非内置模块之前是否先搜索内置模块?

algorithm - 关于向量数据结构设计的问题?