Документация Python неофициальный перевод

15.2. hmac – Хеширование с ключом для аутентификации сообщенийhmac – Keyed-Hashing for Message Authentication

Исходный код: Lib/hmac.py


Этот модуль реализует алгоритм HMAC, описанный в RFC 2104.

hmac.new(key, msg=None, digestmod=None)

Возвращает новый объект hmac. key – это байтовый объект, содержащий секретный ключ. Если msg указан, вызывается метод update(msg). digestmod – это конструктор дайджеста или модуль, используемый объектом HMAC. По умолчанию используется конструктор hashlib.md5.

Объект HMAC имеет следующие методы:

HMAC.update(msg)

Обновляет объект hmac с помощью байтового объекта msg. Повторные вызовы эквивалентны одному вызову с конкатенацией всех аргументов: m.update(a); m.update(b) эквивалентно m.update(a + b).

HMAC.digest()

Возвращает дайджест байтов, переданных методу update() на данный момент. Этот объект bytes будет такой же длины, как digest_size дайджеста, переданного конструктору. Он может содержать не-ASCII байты, включая нулевые байты (NUL).

Предупреждение

При сравнении вывода digest() с внешне предоставленным дайджестом в процедуре проверки рекомендуется использовать функцию compare_digest() вместо оператора == для уменьшения уязвимости к атакам по времени.

HMAC.hexdigest()

Как digest(), за исключением того, что дайджест возвращается в виде строки вдвое большей длины, содержащей только шестнадцатеричные цифры. Это может использоваться для безопасного обмена значением в электронных письмах или других недвоичных средах.

Предупреждение

При сравнении вывода hexdigest() с внешне предоставленным дайджестом в процедуре проверки рекомендуется использовать функцию compare_digest() вместо оператора == для уменьшения уязвимости к атакам по времени.

HMAC.copy()

Возвращает копию («клон») объекта hmac. Это может использоваться для эффективного вычисления дайджестов строк, имеющих общую начальную подстроку.

Этот модуль также предоставляет следующую вспомогательную функцию:

hmac.compare_digest(a, b)

Возвращает a == b. Эта функция использует подход, предназначенный для предотвращения анализа времени выполнения путём избегания короткого замыкания на основе содержимого, что делает её подходящей для криптографии. a и b должны быть одного типа: либо str (только ASCII, как, например, возвращается HMAC.hexdigest()), либо bytes-like object.

Примечание

Если a и b имеют разную длину, или если возникает ошибка, атака по времени теоретически может раскрыть информацию о типах и длине a и b, но не об их значениях.

Новое в версии 3.3.

См. также

Модуль hashlib
Модуль Python, предоставляющий безопасные хеш-функции.