15.6. hmac
—用于消息认证的加密散列¶
源代码: Lib/hmac.py
该模块实现 RFC 2104 描述的HMAC算法。
-
hmac.
new
(key, msg=None, digestmod=None)¶ 返回一个新的hmac对象。 key 是给出密钥的字节或bytearray对象。如果 msg 存在,则进行方法调用
update(msg)
。 digestmod 是要使用的HMAC对象的摘要名称,摘要构造函数或模块。它支持任何适用于hashlib.new()
的名称,默认为hashlib.md5
构造函数。在 3.4 版更改: 参数 key 可以是字节或bytearray对象。参数 msg 可以是
hashlib
支持的任何类型。参数 digestmod 可以是散列算法的名称。3.4 版后已移除: 不推荐使用MD5作为 digestmod 的隐式默认摘要。
HMAC对象具有以下方法:
-
HMAC.
update
(msg)¶ 使用 msg 更新hmac对象。重复调用相当于具有所有参数串联的单个调用:
m.update(a); m.update(b)
等效于m.update(a + b)
。在 3.4 版更改: 参数 msg 可以是
hashlib
支持的任何类型。
-
HMAC.
digest
()¶ 返回到目前为止传递给
update()
方法的字节的摘要。这个字节对象的长度将与提供给构造函数的摘要的 digest_size 长度相同。它可以包含非ASCII字节,包括NUL字节。警告
在验证例程期间将
digest()
的输出与外部提供的摘要进行比较时,建议使用compare_digest()
函数代替==
运算符,以减少定时攻击的漏洞。
-
HMAC.
hexdigest
()¶ 像
digest()
,除了摘要作为字符串返回两倍的长度只包含十六进制数字。这可以用于在电子邮件或其他非二进制环境中安全地交换值。警告
在验证例程期间将
hexdigest()
的输出与外部提供的摘要进行比较时,建议使用compare_digest()
函数代替==
运算符,以减少定时攻击的漏洞。
-
HMAC.
copy
()¶ 返回hmac对象的副本(“克隆”)。这可以用于有效地计算共享公共初始子串的字符串的摘要。
哈希对象具有以下属性:
-
HMAC.
digest_size
¶ 所得HMAC摘要的大小(以字节为单位)。
-
HMAC.
block_size
¶ 哈希算法的内部块大小(以字节为单位)。
3.4 新版功能.
-
HMAC.
name
¶ 此HMAC的规范名称,始终为小写,例如。
hmac-md5
。3.4 新版功能.
此模块还提供以下帮助功能:
-
hmac.
compare_digest
(a, b)¶ 返回
a == b
。此功能使用一种方法,通过避免基于内容的短路行为来防止时序分析,使其适用于加密。 a 和 b 必须都是相同的类型:str
(仅限ASCII,例如由HMAC.hexdigest()
返回)或 bytes-like object。注解
如果 a 和 b 具有不同的长度,或者如果发生错误,则定时攻击理论上可以揭示关于 a 和 b 的类型和长度的信息,但不是它们的值。
3.3 新版功能.
参见
- 模块
hashlib
Python模块提供安全散列函数。