Сообщить об ошибке.

Методы объекта HMAC

Содержание:


Объект HMAC имеет следующие методы.

HMAC.update(msg):

Метод HMAC.update() обновляет объект HMAC, созданный как hmac.new() с помощью msg. Повторные вызовы m.update(a), m.update(b) эквивалентны одному вызову с объединением всех аргументов: m.update(a + b).

Параметр msg может быть любого типа, поддерживаемого модулем hashlib.

Метод HMAC.update() используется при чтении блоками больших файлов при создании к нему подписи с секретным ключом.

import hashlib, hmac

secret_key = 'secret-shared-key'
digest_maker = hmac.new(secret_key.encode(), digestmod='sha256')

with open('/usr/bin/python3', 'rb') as fp:
    while True:
        block = fp.read(1024)
        if not block:
            break
        digest_maker.update(block)

digest = digest_maker.hexdigest()
name = digest_maker.name
print(digest)
print(name)

# 301755e52acc33e777dce1149b6b781470e6212d9ec476323a26704756c1763d
# hmac-sha256

HMAC.digest():

Метод HMAC.digest() возвращает дайджест байтов, переданных методу HMAC.update(). Этот байтовый объект будет той же длины, что и HMAC.digest_size дайджеста, переданного конструктору. Он может содержать байты не ASCII, включая байты NUL.

Предупреждение.
При сравнении вывода HMAC.digest() с предоставленным извне подписью во время процедуры проверки рекомендуется использовать функцию hmac.compare_digest() вместо оператора '==', чтобы уменьшить уязвимость к атакам по времени.

HMAC.hexdigest():

Метод HMAC.hexdigest() возвращает подпись аналогично HMAC.digest(), за исключением того, что дайджест возвращается в виде строки, вдвое большей длины, содержащей только шестнадцатеричные цифры. Это может использоваться для безопасного обмена значениями в электронной почте или других недвоичных средах.

Предупреждение.
При сравнении вывода HMAC.hexdigest() с предоставленным извне подписью во время процедуры проверки рекомендуется использовать функцию hmac.compare_digest() вместо оператора '==', чтобы уменьшить уязвимость к атакам по времени.

HMAC.copy():

Метод HMAC.copy() возвращает копию "клон" объекта HMAC. Это может использоваться для эффективного вычисления дайджестов строк, которые имеют общую начальную подстроку.

Объект HMAC имеет следующие атрибуты:

HMAC.digest_size:

Атрибут HMAC.digest_size возвращает размер результирующей подписи HMAC в байтах.

HMAC.block_size:

Атрибут HMAC.block_size возвращает размер внутреннего блока алгоритма хеширования в байтах.

HMAC.name:

Атрибут HMAC.name Каноническое имя этого HMAC, всегда строчные, например 'hmac-sha1'.

Примеры использования:

>>> import hashlib, hmac
>>> secret = 'mysecret'.encode()
>>> url = 'https://docs-python.ru/standart-library/'.encode()
>>> signing = hmac.new(secret, url, hashlib.sha256)
>>> signing.digest()
# b'\xcf\xa4C\x1e\xd2,\x1eE\xedVW\x16\xd2\x86YdjJ\xbe\x83>;y \x94\xa3B-#\xa7\xe5M'
>>> signing.hexdigest()
# 'cfa4431ed22c1e45ed565716d28659646a4abe833e3b792094a3422d23a7e54d'
>>> signing.digest_size
# 32
>>> signing.block_size
# 64
>>> signing.name
# 'hmac-sha256'