hmac
hmac — Keyed-Hashing for Message Authentication
2.2版本中的新功能。
源代码:
Lib / hmac.py
该模块实现了RFC 2104
所述的HMAC算法。
hmac.new(key[, msg[, digestmod]])
返回一个新的hmac对象。如果msg
存在,则进行方法调用update(msg)
。digestmod
是HMAC对象使用的摘要构造函数或模块。它默认为hashlib.md5
构造函数。
HMAC对象具有以下方法:
HMAC.update(msg)
用msg
字符串更新hmac对象。重复的调用相当于所有参数串联的单个调用:m.update(a m.update(b)相当
于m.update(a + b)。
HMAC.digest()
返回传递给该update()
方法的字符串的摘要。该字符串的长度与给定构造函数的digest_size
相同。它可能包含非ASCII字符,包括NUL字节。
警告
在digest()
验证例程期间,当比较外部提供摘要的输出时,建议使用该compare_digest()
功能而不是==
操作员来降低定时攻击的脆弱性。
HMAC.hexdigest()
就像digest()
除了摘要以长度的两倍返回包含十六进制数字的长度。这可以用于在电子邮件或其他非二进制环境中安全地交换该值。
警告
在hexdigest()
验证例程期间,当比较外部提供摘要的输出时,建议使用该compare_digest()
功能而不是==
操作员来降低定时攻击的脆弱性。
HMAC.copy()
返回hmac对象的副本(“克隆”)。这可用于有效计算共享初始子字符串的字符串摘要。
该模块还提供以下帮助功能:
hmac.compare_digest(a, b)
返回a == b
。此功能采用旨在通过避免基于内容的短路行为来防止时序分析的方法,使其适用于密码学。a
和b
必须是相同的类型:unicode
或者是类似字节的对象。
注意
如果a
和b
的长度不同,或者发生错误,定时攻击理论上可以揭示a
和b
类型和长度的信息- 但不是它们的值。
2.7.7版本的新功能。