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

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

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

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


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

hmac.new(key[, msg[, digestmod]])

Возвращает новый объект hmac. Если указан 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() на данный момент. Длина этой строки равна 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 должны быть одного типа: либо unicode, либо байтоподобный объект.

Примечание

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

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

См. также

Модуль hashlib

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