14.2. hmac — 用于消息身份验证的密钥散列 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/hmac
跳转至:导航、​搜索

14.2. 海马 — 用于消息认证的密钥散列

2.2 版中的新功能。


源代码: :source:`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。 此函数使用旨在通过避免基于内容的短路行为来防止时序分析的方法,使其适用于密码学。 ab 必须是相同的类型:unicodebytes-like object

笔记

如果 ab 的长度不同,或者发生错误,则理论上可以通过时序攻击揭示有关 a的类型和长度的信息]b——但不是它们的值。

2.7.7 版中的新功能。

也可以看看

模块 hashlib
提供安全哈希函数的 Python 模块。