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

hmac.md

64 строк · 5.4 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/hmac.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 14.2. [`hmac`](https://python-all.ru/2.7/library/hmac.html#module-hmac) – Ключевое хэширование для аутентификации сообщений89Новое в версии 2.2.1011**Исходный код:** [Lib/hmac.py](https://python-all.ru/src/2.7/Lib/hmac.py)1213---1415Этот модуль реализует алгоритм HMAC, описанный в [**RFC 2104**](https://python-all.ru/2.7/library/hmac.html).1617#### `hmac.new(key[, msg[, digestmod]])`1819Возвращает новый объект hmac. Если указан *msg*, выполняется вызов метода `update(msg)` . *digestmod* – это конструктор или модуль дайджеста, который будет использовать объект HMAC. По умолчанию используется конструктор `hashlib.md5`.2021Объект HMAC имеет следующие методы:2223#### `HMAC.update(msg)`2425Обновляет объект hmac строкой *msg*. Повторные вызовы эквивалентны одному вызову с конкатенацией всех аргументов: `m.update(a); m.update(b)` эквивалентно `m.update(a + b)`.2627#### `HMAC.digest()`2829Возвращает дайджест строк, переданных методу [`update()`](https://python-all.ru/2.7/library/hmac.html#hmac.HMAC.update) на данный момент. Длина этой строки равна *digest\_size* дайджеста, переданного конструктору. Она может содержать не-ASCII символы, включая нулевые байты (NUL).3031> **Предупреждение**32>33> При сравнении вывода [`digest()`](https://python-all.ru/2.7/library/hmac.html#hmac.HMAC.digest) с внешне предоставленным дайджестом во время процедуры верификации рекомендуется использовать функцию [`compare_digest()`](https://python-all.ru/2.7/library/hmac.html#hmac.compare_digest) вместо оператора `==`, чтобы снизить уязвимость к атакам по времени.3435#### `HMAC.hexdigest()`3637Как [`digest()`](https://python-all.ru/2.7/library/hmac.html#hmac.HMAC.digest), но дайджест возвращается в виде строки вдвое большей длины, содержащей только шестнадцатеричные цифры. Это может использоваться для безопасного обмена значением по электронной почте или в других недвоичных средах.3839> **Предупреждение**40>41> При сравнении вывода [`hexdigest()`](https://python-all.ru/2.7/library/hmac.html#hmac.HMAC.hexdigest) с внешне предоставленным дайджестом во время процедуры верификации рекомендуется использовать функцию [`compare_digest()`](https://python-all.ru/2.7/library/hmac.html#hmac.compare_digest) вместо оператора `==`, чтобы снизить уязвимость к атакам по времени.4243#### `HMAC.copy()`4445Возвращает копию («клон») объекта hmac. Это может использоваться для эффективного вычисления дайджестов строк, имеющих общую начальную подстроку.4647Этот модуль также предоставляет следующую вспомогательную функцию:4849#### `hmac.compare_digest(a, b)`5051Возвращает `a == b`. Эта функция использует подход, предназначенный для предотвращения анализа времени выполнения за счет исключения сокращённых вычислений на основе содержимого, что делает её подходящей для криптографии. *a* и *b* должны быть одного типа: либо [`unicode`](https://python-all.ru/2.7/library/functions.html#unicode), либо [байтоподобный объект](https://python-all.ru/2.7/glossary.html#term-bytes-like-object).5253> **Примечание**54>55> Если *a* и *b* имеют разную длину или возникает ошибка, теоретически атака по времени может раскрыть информацию о типах и длинах *a* и *b*, но не их значения.5657Новое в версии 2.7.7.5859> **См. также**60>61> **Модуль [`hashlib`](https://python-all.ru/2.7/library/hashlib.html#module-hashlib)**62>63> Модуль Python, предоставляющий безопасные хеш-функции.64