匹配哈希+盐渍密码

时间:2015-04-27 18:41:34

标签: python encryption hash sha256 conceptual

我正在学习加密和安全性,我对一个(可能是简单的)概念感到困惑。

我理解哈希和盐在大多数情况下是如何工作的,但我不明白函数如何匹配密码。例如,这是passlib文档的一部分:

>>> # import the hash algorithm
>>> from passlib.hash import sha256_crypt

>>> # generate new salt, and hash a password
>>> hash = sha256_crypt.encrypt("toomanysecrets")
>>> hash
'$5$rounds=80000$zvpXD3gCkrt7tw.1$QqeTSolNHEfgryc5oMgiq1o8qCEAcmye3FoMSuvgToC'

>>> # verifying the password
>>> sha256_crypt.verify("toomanysecrets", hash)
True
>>> sha256_crypt.verify("joshua", hash)
False

在第4行,它提到生成一个新的盐,但据我所知,盐永远不会与密码一起存储。

为什么我可以将散列密码作为字符串存储在数据库中,并在以后验证它而不提供盐?

1 个答案:

答案 0 :(得分:3)

the documentation

  

sha256-crypt哈希字符串的格式为$5$rounds=rounds$salt$checksum

salt(在您的情况下为'zvpXD3gCkrt7tw.1')将存储在字符串本身;这就是为什么它不需要单独存储。

相关问题