2017-02-24 18 views

回答

7

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)