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

使用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算法和密钥进行完整性校验。