【发布时间】:2017-01-31 12:12:15
【问题描述】:
我正在学习如何在使用 MySQL 和 Python 进行开发时保护密码,遵循 this tutorial。
据我了解,userpassword 存储在数据库中哈希,salt 存储在未加密的一侧,这样我们就可以获取哈希密码和 salt,并使用 salt 重新哈希输入的密码,然后比较两者.
但是,当使用 PBKDF2(通过 passlib.hash.sha256_crypt() 函数)时,我不能设置自己的盐,只能设置它的大小。那么如何使用相同的盐重新加密密码以便比较两者?
【问题讨论】:
-
hashlib.pbkdf2_hmac()吃盐。你用的是什么功能? -
我正在使用 pbkdf2_sha256.encrypt,遵循cyberciti.biz/python-tutorials/… 中的指南
-
那个implementation 也需要盐。如果未指定,则会为您生成一个。
-
我可以只做 pbkdf2_sha256.encrypt(arg, arg, salt='blabla235') 吗?
-
请注意,返回的字符串包含盐,因此您不需要预先生成一个。该字符串的格式为
$<type>$rounds=<rounds>$salt$hash,因此如果您想单独存储哈希值,您可以根据需要单独存储。
标签: python mysql python-3.x salt pbkdf2