hmac — Ключевое хеширование для аутентификации сообщений

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


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

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

Возвращает новый объект hmac. key является объектом байтов или массива байтов, дающим секретный ключ. Если msg присутствует, выполняется вызов метода update(msg). digestmod - имя дайджеста, конструктор дайджеста или модуль для используемого объекта HMAC. Это может быть любое имя, подходящее для hashlib.new(). Несмотря на свою аргументационную позицию, она обязательна.

Изменено в версии 3.4: Параметр key может быть байтами или объектом массива байтов. Параметр msg может быть любого типа, поддерживаемого hashlib. Параметр digestmod может быть именем хэш-алгоритма.

Deprecated since version 3.4, will be removed in version 3.8: MD5 как неявный дайджест по умолчанию для digestmod устарел. Теперь требуется параметр digestmod. Передайте его в качестве аргумента ключевой, чтобы избежать неловкости, если у вас нет начального сообщения.

hmac.digest(key, msg, digest)

Возвращает дайджест msg для данных секретных key и digest. Функция эквивалентна HMAC(key, msg, digest).digest(), но использует оптимизированную C или встроенную реализацию, которая быстрее для сообщений, вписывающихся в память. Параметры key, msg и digest имеют то же значение, что и в new().

CPython детали реализации оптимизированная реализация C является используемый только тогда, когда digest является строка и именем алгоритма дайджеста, который поддерживается OpenSSL.

Добавлено в версии 3.7.

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

HMAC.update(msg)

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

Изменено в версии 3.4: Параметр msg может быть любого типа, поддерживаемого hashlib.

HMAC.digest()

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

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

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

HMAC.hexdigest()

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

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

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

HMAC.copy()

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

Хэш-объект имеет следующие атрибуты:

HMAC.digest_size

Размер результирующего дайджеста HMAC в байтах.

HMAC.block_size

Внутренний размер блока хэш-алгоритма в байтах.

Добавлено в версии 3.4.

HMAC.name

Каноническое имя этого HMAC, всегда в нижнем регистре, например hmac-md5.

Добавлено в версии 3.4.

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

hmac.compare_digest(a, b)

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

Примечание

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

Добавлено в версии 3.3.

См.также

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