安全密碼雜湊

hashlib 模組公開的 PBKDF2 演算法可用於執行安全密碼雜湊。雖然此演算法無法阻止暴力攻擊以便從儲存的雜湊中恢復原始密碼,但這種攻擊非常昂貴。

import hashlib
import os

salt = os.urandom(16)
hash = hashlib.pbkdf2_hmac('sha256', b'password', salt, 100000)

PBKDF2 可以使用任何摘要演算法,上面的例子使用通常推薦的 SHA256。隨機鹽應與雜湊密碼一起儲存,為了將輸入的密碼與儲存的雜湊進行比較,你將再次需要它。每個密碼必須使用不同的鹽進行雜湊處理。關於輪數,建議將其設定為儘可能高的應用程式

如果希望結果為十六進位制,則可以使用 binascii 模組:

import binascii
hexhash = binascii.hexlify(hash)

注意 :雖然 PBKDF2 並不差,但是 bcrypt 和特別是 scrypt 被認為對強暴攻擊更強。目前,它們都不是 Python 標準庫的一部分。