欢迎访问宙启技术站
智能推送

利用Python的Crypto.Hash.HMACnew()函数生成完整性保护的消息验证

发布时间:2023-12-26 03:24:10

HMAC (Hash-based Message Authentication Code) 是一种基于哈希函数的消息认证码,用于保证消息的完整性和认证。Python的Crypto模块提供了HMAC算法的实现,其中HMAC.new()函数用于生成完整性保护的消息验证。

HMAC.new()函数接受三个参数:密钥、待验证的消息和哈希算法。密钥和待验证的消息都需要是二进制字符串,而哈希算法则是一个可选参数,默认为SHA-1算法。函数返回的是一个HMAC对象,可以通过调用其digest()方法获取完整性校验值。

下面是一个使用HMAC.new()函数生成完整性保护的消息验证的示例代码:

from Crypto.Hash import HMAC, SHA256

def generate_hmac(key: bytes, message: bytes) -> bytes:
    hmac_obj = HMAC.new(key, message, SHA256)
    return hmac_obj.hexdigest()

# 密钥和待验证的消息
key = b'my_secret_key'
message = b'Hello, World!'

# 生成HMAC
hmac = generate_hmac(key, message)

print(f"HMAC: {hmac}")

在这个示例中,我们导入了Crypto.Hash模块中的HMAC类和SHA256哈希算法,并定义了一个generate_hmac函数来生成HMAC。我们传入了密钥my_secret_key和待验证的消息Hello, World!

然后,我们调用HMAC.new()函数生成HMAC对象,并指定使用SHA256算法。最后,我们调用hmac_obj.hexdigest()方法获取完整性校验值,并打印输出。

运行以上代码,将会输出如下结果:

HMAC: a16bbfa14c658b45c4ba245db9ee1c5e0f0b2dcf383edb21e7710730b7ee6b15

这个输出结果就是待验证的消息Hello, World!的完整性校验值。利用HMAC算法,我们可以确保消息的完整性,即使是在传输过程中被篡改,也能够检测到。