HMAC是使用密码哈希函数进行消息身份验证的机制。 HMAC可以与任何秘密的加密哈希函数(例如MD5, SHA-1)结合使用, 并与秘密共享密钥结合使用。
该模块实现了HMAC算法。基本思想是生成与共享密钥组合的实际数据的加密哈希。然后, 可以将所得的哈希用于检查传输或存储的消息以确定信任级别, 而无需传输密钥。
hmac.new(key, msg=None, digestmod=None)
【Python hmac –消息身份验证的键哈希介绍】返回一个新的hmac对象。键是提供密钥的字节或字节数组对象。如果味精存在时, 将进行方法调用update(msg)。摘要模式是要使用的HMAC对象的摘要名称, 摘要构造函数或模块。它支持适用于hashlib.new()的任何名称。
HMAC对象具有以下方法:
- HMAC.update(msg):此方法使用msg更新hmac对象。重复调用等效于将所有参数串联在一起的单个调用:m.update(a); m.update(b)等同于m.update(a + b)。
- HMAC.digest():此方法返回到目前为止传递给update()方法的字节的摘要。该字节对象的长度与提供给构造函数的摘要的digest_size相同。
- HMAC.hexdigest():此方法类似于digest()方法, 不同之处在于摘要以字符串形式返回, 该字符串的长度是仅包含十六进制数字的长度的两倍。
- HMAC.copy():此方法返回hmac对象的副本或克隆。这可用于有效地计算共享公共初始子字符串的字符串的摘要。
- HMAC.digest_size:生成的HMAC摘要的大小(以字节为单位)。
- HMAC.block_size:哈希算法的内部块大小(以字节为单位)。
- HMAC。名称:此HMAC的规范名称。例如hmac-sha1。
# Python 3 code to demonstrate the working of hmac module.import hmac
import hashlib# creating new hmac object using sha1 hash algorithm
digest_maker = hmac.new(b 'secret-key' , b 'msg' , hashlib.sha1)# print the Hexdigest of the bytes passed to update
print ( "Hexdigest: " + digest_maker.hexdigest())# call update to update msg
digest_maker.update(b 'another msg' )# print the Hexdigest of the bytes passed to update
print ( "Hexdigest after update: " + digest_maker.hexdigest())print ( "Digest size: " + str (digest_maker.digest_size) + " bytes" )
print ( "Block size: " + str (digest_maker.block_size) + " bytes" )
print ( "Canonical name: " + digest_maker.name)# print the digest of the bytes passed to update
print ( "Digest: " , end = " " )
print (digest_maker.digest())# create a copy of the hmac object
digest_clone = digest_maker.copy()
print ( "Hexdigest of clone: " + digest_clone.hexdigest())
输出如下:
Hexdigest: df2ae7cdb5c849001e33ee29eb1c51ba2cafbaa7
Hexdigest after update: 3923273eb3aa9328478eb5aabf2d96e185256b4b
Digest size: 20 bytes
Block size: 64 bytes
Canonical name: hmac-sha1
Digest:b"9#'>
\xb3\xaa\x93(G\x8e\xb5\xaa\xbf-\x96\xe1\x85%kK"
Hexdigest of clone: 3923273eb3aa9328478eb5aabf2d96e185256b4b
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- 快速排序中的Hoare vs Lomuto分区方案详细介绍
- OpenCV中的直方图均衡介绍和代码示例
- Linux中的HISTCONTROL命令及示例
- 算法设计(公路广告牌问题解决和代码实现)
- 2021年8个顶级Node.js框架推荐,Web开发必备干货!
- 如何在JavaScript中实现HashMap(详细实现指南)
- 删除不必要的启动条目并加快启动速度的4个工具
- 如果有智慧公交可视化平台,《开端》还能无限重启吗()
- 用于Windows关机,休眠,睡眠或重启的8个免费工具