0
点赞
收藏
分享

微信扫一扫

python中hmac+hash数字签名

逸省 2023-07-14 阅读 67

在Python中,HMAC(Hash-based Message Authentication Code)是一种用于消息认证的密码学函数。HMAC结合了哈希函数和密钥,用于验证消息的完整性和身份。

Python标准库中的hmac模块提供了HMAC函数的实现。下面是一个示例代码,演示了如何在Python中使用HMAC:

from hashlib import sha256
import hmac
import time

def get_sign(key,message):
    message = message.encode("utf-8")#字符串转bytes:字节
    key_s = key.encode("utf-8")
    #使用SHA-256哈希算法计算HMAC
    siT2=hmac.new(key_s,message,digestmod=sha256).digest()#hash.digest() 返回摘要,作为二进制数据字符串值
    return siT2.hex()#返回HMAC的十六进制表示
if __name__=='__main__':
    timestramp=str(round(time.time()*1000))
    key="000000"
    message="123456"  + timestramp #签名数据加上当前时间戳
    print(get_sign(key,message))

执行代码结果:6038b9f22aaec49ddc91532cd366876ddcab7d954cf88039693a9c844b0f77f7

代码解释原理:

1、密钥选择:首先,选择一个密钥(key)作为HMAC的输入。密钥是一个随机生成的字节序列,应该保持机密和安全。

2、消息准备:将要计算HMAC的消息(message)以字节形式表示。消息可以是任意长度的数据,例如文本字符串或二进制数据。

3、哈希算法选择:选择一个哈希算法,例如SHA-256(Secure Hash Algorithm 256-bit)。在示例中,我们使用hashlib.sha256表示SHA-256哈希算法。

4、HMAC计算:使用hmac.new(key, message, hashlib.sha256)函数计算HMAC。该函数接受三个参数:密钥、消息和哈希算法。它将密钥和消息作为输入,并在内部使用选择的哈希算法对它们进行处理。

5、HMAC值获取:通过调用.digest()方法获取计算得到的HMAC值。HMAC值是一个字节序列,代表了消息的认证码。

6、HMAC表示:通过.hex()方法将HMAC值转换为十六进制表示,以便进行打印或其他操作。

HMAC的安全性依赖于密钥的保密性。由于HMAC使用了密钥来计算认证码,只有知道正确密钥的人才能验证消息的完整性和身份。任何未授权的修改消息或未知的密钥都会导致HMAC值的不匹配。

因此,HMAC提供了一种有效的方式来验证消息的完整性和身份,防止消息被篡改或伪装。它在网络通信、数字签名、认证协议等领域广泛应用。


举报

相关推荐

0 条评论