hmac — Ключевое хеширование для аутентификации сообщений
Новая версия 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.
См. также
-
Modulehashlib -
Модуль Python, предоставляющий безопасные хеш-функции.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/hmac.html