Python Glossary English

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