hmac消息认证的密钥哈希(2)Python加密处理(必读进阶Python教程)(参考资料)
该模块实现了如下所述的HMAC算法 RFC 2104。
hmac.
new
(key,msg = None,digestmod = 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或内联实现,这对于适合内存的消息更快。参数key,msg和digest具有与in中相同的含义。
HMAC(key, msg, digest).digest()
new()
CPython实现细节,优化的C实现仅在摘要是OpenSSL支持的摘要算法的字符串和名称时使用。
版本3.7中的新功能。
HMAC对象具有以下方法:
HMAC.
update
(msg )- 使用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_digest
(a,b )- 返回。此功能使用一种方法,旨在通过避免基于内容的短路行为来防止时序分析,使其适用于加密。 a和b必须属于同一类型:要么(仅限ASCII,例如返回 ),要么是类字节对象。
a == b
str
HMAC.hexdigest()
注意
如果a和b具有不同的长度,或者如果发生错误,定时攻击理论上可以揭示关于a和b的类型和长度的信息,而不是它们的值。
版本3.3中的新功能。
也可以看看
- 模
hashlib
- Python模块提供安全散列函数。