为什么每次运行脚本时,此passlib哈希脚本都会创建一个新结果?

时间:2016-08-13 18:58:59

标签: python hash passwords salt passlib

我正在使用以下script from the passlib docs来填写密码:

# import the hash algorithm                                                         
from passlib.hash import sha256_crypt                                               

# generate new salt, and hash a password
hash = sha256_crypt.encrypt("toomanysecrets")
print hash  # <== WHY IS THIS ALWAYS A DIFFERENT STRING?
# verifying the password
print sha256_crypt.verify("toomanysecrets", hash)  # Outputs "True"
print sha256_crypt.verify("joshua", hash)  # Outputs "False"

sha256_crypt.verify能够将多个不同的哈希验证为“toomanysecrets”似乎很奇怪 - 为什么这个密码只有一个哈希?

1 个答案:

答案 0 :(得分:2)

哈希结果取决于输入和salt。 salt - 它是随机生成的值,它包含在输出字符串中,同时包含散列结果。这就是为什么每个调用sha256_crypt.encrypt输出字符串看起来是随机的,但密码验证能力是保留的。