使用Python的Crypto.Hash.HMAC函数对数据进行完整性校验的示例代码
发布时间:2024-01-10 14:36:36
完整性校验是一种用来验证数据是否被篡改或者修改的技术。Python的crypto模块中的HMAC函数提供了使用Hash算法进行完整性校验的功能。
下面是使用Python的Crypto.Hash.HMAC函数进行完整性校验的示例代码:
from Crypto.Hash import HMAC, SHA256
def calculate_hmac(key, data):
# 创建HMAC对象,并指定使用的Hash算法为SHA256
hmac_obj = HMAC.new(key, digestmod=SHA256)
# 更新HMAC对象的计算内容
hmac_obj.update(data)
# 返回HMAC结果
return hmac_obj.hexdigest()
def verify_hmac(key, data, hmac):
# 计算数据的期望HMAC结果
expected_hmac = calculate_hmac(key, data)
# 比较期望HMAC结果和给定的HMAC结果
if hmac == expected_hmac:
print("数据完整性验证通过!")
else:
print("数据完整性验证失败!")
# 示例用的密钥和数据
key = b'secret_key'
data = b'original_data'
# 计算并打印HMAC结果
hmac = calculate_hmac(key, data)
print("HMAC结果:", hmac)
# 验证HMAC结果
verify_hmac(key, data, hmac)
上述代码中,首先导入了HMAC类和SHA256哈希算法类。然后定义了calculate_hmac函数,该函数用于计算给定数据的HMAC结果。在这个函数中,通过HMAC.new()创建一个HMAC算法对象,并指定使用的哈希算法为SHA256。然后使用update()方法更新HMAC对象的计算内容,最后通过hexdigest()方法获取HMAC结果。
接下来是verify_hmac函数,该函数用于验证给定数据的HMAC结果是否与期望的结果相符。首先在函数中调用calculate_hmac函数计算数据的期望HMAC结果,然后将期望结果与给定的HMAC结果进行比较,如果相等则输出验证通过的提示,否则输出验证失败的提示。
在示例代码的后面,定义了一个示例用的密钥和数据,并调用calculate_hmac函数计算HMAC结果,并将其打印出来。然后调用verify_hmac函数验证HMAC结果。
以上是使用Python的Crypto.Hash.HMAC函数对数据进行完整性校验的示例代码和使用例子。根据实际情况,你可以根据需要选择合适的Hash算法和密钥进行完整性校验。
