hmac — Keyed-Hashing for Message Authentication¶
Вихідний код: Lib/hmac.py
Цей модуль реалізує алгоритм HMAC, як описано в RFC 2104.
-
hmac.new(key, msg=None, digestmod='')¶ Повернути новий об’єкт hmac. key — це об’єкт bytes або bytearray, що надає секретний ключ. Якщо присутній msg, виконується виклик методу
update(msg). digestmod — назва дайджесту, конструктор дайджесту або модуль для використання об’єктом HMAC. Це може бути будь-яке ім’я, яке підходить дляhashlib.new(). Незважаючи на свою аргументовану позицію, вона потрібна.Змінено в версії 3.4: Параметр key може бути об’єктом bytes або bytearray. Параметр msg може бути будь-якого типу, який підтримується
hashlib. Параметр digestmod може бути назвою хеш-алгоритму.Deprecated since version 3.4, removed in version 3.8: MD5 as implicit default digest for digestmod is deprecated. The digestmod parameter is now required. Pass it as a keyword argument to avoid awkwardness when you do not have an initial msg.
-
hmac.digest(key, msg, 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(). Цей об’єкт bytes матиме таку саму довжину, що й digest_size дайджесту, наданого конструктору. Він може містити байти, відмінні від ASCII, включаючи байти NUL.Попередження
When comparing the output of
digest()to an externally-supplied digest during a verification routine, it is recommended to use thecompare_digest()function instead of the==operator to reduce the vulnerability to timing attacks.
-
HMAC.hexdigest()¶ Подібно до
digest(), за винятком того, що дайджест повертається як рядок подвійної довжини, що містить лише шістнадцяткові цифри. Це можна використовувати для безпечного обміну значенням в електронній пошті чи в інших небінарних середовищах.Попередження
When comparing the output of
hexdigest()to an externally-supplied digest during a verification routine, it is recommended to use thecompare_digest()function instead of the==operator to reduce the vulnerability to timing attacks.
-
HMAC.copy()¶ Повертає копію («клон») об’єкта hmac. Це можна використовувати для ефективного обчислення дайджестів рядків, які мають спільний початковий підрядок.
Хеш-об’єкт має такі атрибути:
-
HMAC.digest_size¶ Розмір отриманого дайджесту HMAC у байтах.
-
HMAC.block_size¶ Розмір внутрішнього блоку хеш-алгоритму в байтах.
Нове в версії 3.4.
-
HMAC.name¶ Канонічна назва цього HMAC, завжди в нижньому регістрі, напр.
hmac-md5.Нове в версії 3.4.
Застаріло починаючи з версії 3.9: The undocumented attributes HMAC.digest_cons, HMAC.inner, and
HMAC.outer are internal implementation details and will be removed in
Python 3.10.
Цей модуль також надає такі допоміжні функції:
-
hmac.compare_digest(a, b)¶ Повернути
a == b. Ця функція використовує підхід, призначений для запобігання аналізу часу шляхом уникнення короткого замикання на основі вмісту, що робить її придатною для криптографії. a і b мають бути одного типу: абоstr(тільки ASCII, як, наприклад, повертаєHMAC.hexdigest()), або bytes-like object.Примітка
Якщо a і b мають різну довжину або якщо сталася помилка, атака на синхронізацію теоретично може відкрити інформацію про типи та довжини a і b, але не їхні значення.
Нове в версії 3.3.
Змінено в версії 3.9: Функція внутрішньо використовує
CRYPTO_memcmp()OpenSSL, якщо доступний.
Дивись також
- Модуль
hashlib Модуль Python, що забезпечує безпечні хеш-функції.