Безопасное хеширование паролей

Алгоритм PBKDF2 разоблачена hashlib модуль может быть использован для выполнения безопасного хэширования паролей. Хотя этот алгоритм не может предотвратить атаки методом перебора для восстановления исходного пароля из сохраненного хэша, он делает такие атаки очень дорогими.

 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.