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