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, обеспечивающий безопасные функции хэширования.