该模块实现了如下所述的HMAC算法 RFC 2104

hmac.newkeymsg = Nonedigestmod = None 
返回一个新的hmac对象。 key是给出密钥的字节或bytearray对象。如果存在msg,则进行方法调用update(msg)。 digestmod是要使用的HMAC对象的摘要名称,摘要构造函数或模块。它支持任何适合的名称hashlib.new(),默认为hashlib.md5构造函数。

版本3.4中更改:参数可以是字节或bytearray对象。参数msg可以是支持的任何类型hashlib。参数digestmod可以是哈希算法的名称。

从版本3.4开始不推荐使用,将在版本3.8中删除: MD5,因为不推荐使用digestmod的隐式默认摘要。

hmac.digest消息摘要
返回给定密钥摘要消息摘要。该函数等效于,但使用优化的C或内联实现,这对于适合内存的消息更快。参数keymsgdigest具有与in中相同的含义。HMAC(key, msg, digest).digest()new()

CPython实现细节,优化的C实现仅在摘要是OpenSSL支持的摘要算法的字符串和名称时使用。

版本3.7中的新功能。

HMAC对象具有以下方法:

HMAC.updatemsg 
使用msg更新hmac对象。重复调用相当于单个调用,并且所有参数都连接在一起: 相当于。m.update(a);m.update(b)m.update(a + b)

版本3.4中已更改:参数msg可以是支持的任何类型hashlib

HMAC.digest
返回update()到目前为止传递给方法的字节的摘要。此bytes对象的长度与给予构造函数的摘要的digest_size的长度相同。它可能包含非ASCII字节,包括NUL字节。

警告

digest()验证例程期间比较外部提供的摘要的输出时,建议使用 compare_digest()函数而不是==运算符来减少定时攻击的漏洞。

HMAC.hexdigest
就像digest()除了摘要作为字符串返回两倍长度只包含十六进制数字。这可用于在电子邮件或其他非二进制环境中安全地交换值。

警告

hexdigest()验证例程期间比较外部提供的摘要的输出时,建议使用 compare_digest()函数而不是==运算符来减少定时攻击的漏洞。

HMAC.copy
返回hmac对象的副本(“clone”)。这可以用于有效地计算共享公共初始子字符串的字符串的摘要。

哈希对象具有以下属性:

HMAC.digest_size
生成的HMAC摘要的大小(以字节为单位)。
HMAC.block_size
散列算法的内部块大小(以字节为单位)。

版本3.4中的新功能。

HMAC.name
这个HMAC的规范名称,总是小写的,例如hmac-md5

版本3.4中的新功能。

该模块还提供以下辅助函数:

hmac.compare_digesta
返回。此功能使用一种方法,旨在通过避免基于内容的短路行为来防止时序分析,使其适用于加密。 ab必须属于同一类型:要么(仅限ASCII,例如返回 ),要么是类字节对象a == bstrHMAC.hexdigest()

注意

如果ab具有不同的长度,或者如果发生错误,定时攻击理论上可以揭示关于ab的类型和长度的信息,而不是它们的值。

版本3.3中的新功能。

也可以看看

模 hashlib
Python模块提供安全散列函数。