все Python 3hashlibфункция
hashlib.pbkdf2_hmac()
хеширование паролей
Медленное хеширование пароля с солью (PBKDF2): из пароля получают ключ, перебор которого стоит дорого. Для паролей — вместо sha256().
Синтаксис
hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None)
Стойкость задаёт число итераций, и в учебных примерах оно смешно мало: на деле для SHA-256 рекомендуют сотни тысяч (OWASP — 600 000), а вызов должен занимать заметные доли секунды. Соль — случайные 16+ байт из os.urandom() или secrets, своя у каждого пользователя, хранится рядом с хешем вместе с числом итераций. Пароль и соль — только bytes: строку кодируют .encode(), иначе TypeError.
Примеры
import hashlib
# 1000 итераций — только для примера; на деле — сотни тысяч
key = hashlib.pbkdf2_hmac('sha256', b'password', b'salt', 1000)
print(key.hex()[:16], len(key)) # → 632c2812e46d4604 32
import hashlib
try:
hashlib.pbkdf2_hmac('sha256', 'password', b'salt', 1000)
except TypeError as e:
print(e) # → a bytes-like object is required, not 'str'
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности