前言
HMAC算法可以用于验证信息的完整性,这些信息可能在应用之间传递,或者存储在一个可能有安全威胁的地方。
其基本思路:生成实际数据的一个密码散列,并提供一个共享的秘密密钥。然后使用得到的散列检查所传输或存储的信息,以确定一个信任级别,而不传输秘密密钥。
消息签名
hmac库提供了一个new()函数来创建一个新对象来计算消息签名。示例如下:
import hashlib import hmac str = 'Li YuanJing' hmac_maker = hmac.new(b'820-880-8820', bytes(str, 'utf-8'), hashlib.sha1).hexdigest() print(hmac_maker)
运行之后,效果如下:
new第1个参数:秘密密钥
第2个参数:需要认证签名的数据
第3个参数:采用的散列算法
如控制台输出,计算出了一个HMAC签名。
二进制摘要
在许多的Web服务中,我们会经常使用base64编码版本的二进制摘要,所以我们需要将上面的签名数据返回为base64编码的二进制摘要,示例如下:
import hashlib import hmac import base64 str = 'Li YuanJing' hmac_maker = hmac.new(b'820-880-8820', bytes(str, 'utf-8'), hashlib.sha1).digest() print(base64.encodebytes(hmac_maker))
运行之后,效果如下: