On this page
14.2. hmac —消息身份验证的键哈希
2.2 版中的新Function。
源代码: Lib/hmac.py
此模块实现 RFC 2104所描述的 HMAC 算法。
hmac.
new
(* key * [,* msg * [,* digestmod *]])- 返回一个新的 hmac 对象。如果存在* msg *,则进行方法调用
update(msg)
。 * digestmod *是供 HMAC 对象使用的摘要构造函数或模块。它默认为hashlib.md5
构造函数。
- 返回一个新的 hmac 对象。如果存在* msg *,则进行方法调用
HMAC 对象具有以下方法:
HMAC.
update
(* msg *)- 用字符串* msg *更新 hmac 对象。重复调用等效于将所有参数串联在一起的单个调用:
m.update(a); m.update(b)
等效于m.update(a + b)
。
- 用字符串* msg *更新 hmac 对象。重复调用等效于将所有参数串联在一起的单个调用:
HMAC.
digest
( )- 返回到目前为止传递给update()方法的字符串的摘要。该字符串的长度与提供给构造函数的摘要的* digest_size *相同。它可能包含非 ASCII 字符,包括 NUL 字节。
Warning
在验证例程期间将digest()的输出与外部提供的摘要进行比较时,建议使用compare_digest()函数而不是==
运算符来减少定时攻击的脆弱性。
HMAC.
hexdigest
( )- 像digest()一样,摘要以字符串形式返回,该字符串的长度是仅包含十六进制数字的两倍。这可用于在电子邮件或其他非二进制环境中安全地交换值。
Warning
在验证例程期间将hexdigest()的输出与外部提供的摘要进行比较时,建议使用compare_digest()函数而不是==
运算符来减少定时攻击的脆弱性。
HMAC.
copy
( )- 返回 hmac 对象的副本(“克隆”)。这可用于有效地计算共享公共初始子字符串的字符串的摘要。
此模块还提供以下帮助器Function:
hmac.
compare_digest
(* a , b *)- 返回
a == b
。此Function使用一种旨在避免时序分析的方法,该方法可避免基于内容的短路行为,从而使其适用于密码学。 * a 和 b *必须都属于同一类型:unicode或bytes-like object。
- 返回
Note
如果* a 和 b 的长度不同,或者发生错误,则定时攻击理论上可以揭示有关 a 和 b *的类型和长度的信息,但不能显示其值。
2.7.7 版中的新Function。
See also
Module hashlib
提供安全哈希函数的 Python 模块。