在generate_password_hash
使用SHA-1的不容易,因为它仅用作在PBKDF2哈希的中间,迭代步骤。 See the discussion in chat.
当你像PBKDF2中链接无数散列时,风险与纯粹机会打破强密码的人无法区分。
的cryptography-dev邮件列表上进一步讨论后,我们决定改变默认SHA-512为心情舒畅,即使它不影响安全性现在。
你是正确的,与SHA-1使用HMAC时的安全性仍然很好, HMAC-MD5是安全的,甚至无论你相信与否。也就是说,我通常建议人们迁移到HMAC-SHA-256,无论如何, ,以便更容易地分析他们的软件。
你可能要考虑使用SHA512,而不是由于在64位平台上的优化。
generate_password_hash
需要method
参数来定制如何生成哈希值。默认值是pbkdf2:sha1
。为PBKDF2传递一个不同的派生方法。
generate_password_hash(secret, method='pbkdf2:sha512')
您也可以从1000低改变默认的迭代次数,以更高的数量,以较慢的速度哈希的成本。 pbkdf2:sha1:10000
。
只要散列和迭代调整的很好,你可能用PBKDF2就可以了。或者,使用Passlib,它支持比Werkzeug更多的散列方法。请参阅Passlib的recommended hashes以讨论要使用的哈希。这个例子展示了如何在Passlib中使用bcrypt。
pip install passlib bcrypt
from passlib.context import CryptContext
crypt_context = CryptContext(schemes=['bcrypt_sha256'])
crypt_context.hash(secret)