все Python 3hmacфункция
hmac.new()
подпись сообщений
Создаёт HMAC — подпись сообщения секретным ключом, по которой получатель с тем же ключом проверит подлинность и целостность.
Синтаксис
h = hmac.new(key, msg=None, digestmod='sha256')
В отличие от hashlib.sha256(key + msg), уязвимого к атаке удлинения, HMAC подделать без ключа нельзя. digestmod обязателен с 3.8, хотя стоит третьим: без него TypeError. Ключ и сообщение — bytes, строку сначала кодируют. Подписи сверяют через hmac.compare_digest(), а не ==, иначе возможна атака по времени.
Примеры
import hmac
sig = hmac.new(b'key', b'The quick brown fox jumps over the lazy dog', 'sha256')
print(sig.hexdigest()[:16]) # → f7bc83f430538424
hmac.new(b'key', b'msg') # → TypeError: Missing required argument 'digestmod'.
import hmac
key = b'server-secret'
expected = hmac.new(key, b'user=42', 'sha256').hexdigest()
received = hmac.new(key, b'user=42', 'sha256').hexdigest()
print(hmac.compare_digest(expected, received)) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности