Python Glossary English

все 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Сообщить о неточности