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

使用Python编写HMAC相关功能的 实践

发布时间:2023-12-16 23:56:35

HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的消息认证码算法,常被用于验证消息的完整性和真实性。在Python中,可以使用hmac模块来实现HMAC相关的功能。本文将介绍HMAC的 实践,并提供一个使用例子来演示其用法。

1. 导入hmac模块及其他必要的模块

import hmac
import hashlib
import os

2. 生成一个随机的密钥

key = os.urandom(16)

3. 使用HMAC算法计算消息的摘要

message = b"Hello, World!"
digest = hmac.new(key, message, hashlib.sha256).digest()

4. 使用HMAC算法计算消息的摘要,并以十六进制表示

message = b"Hello, World!"
digest_hex = hmac.new(key, message, hashlib.sha256).hexdigest()

5. 验证消息的完整性和真实性

received_message = b"Hello, World!"
received_digest = hmac.new(key, received_message, hashlib.sha256).digest()

if hmac.compare_digest(received_digest, digest):
    print("The message is authentic.")
else:
    print("The message is not authentic.")

6. 使用HMAC算法计算大文件的摘要

def hmac_file(key, file_path):
    hash_object = hmac.new(key, b'', hashlib.sha256)

    with open(file_path, 'rb') as file:
        while chunk := file.read(4096):
            hash_object.update(chunk)

    return hash_object.digest()

7. 示例,使用HMAC算法计算文件的摘要并验证其完整性

file_path = "example.txt"
key = os.urandom(16)

# 计算文件的摘要
file_digest = hmac_file(key, file_path)

# 验证文件的完整性
with open(file_path, 'rb') as file:
    received_file_digest = hmac.new(key, file.read(), hashlib.sha256).digest()

if hmac.compare_digest(received_file_digest, file_digest):
    print("The file is authentic.")
else:
    print("The file is not authentic.")

以上就是使用Python编写HMAC相关功能的 实践以及一个使用例子。通过使用hmac模块,我们可以轻松地实现HMAC算法来验证消息或文件的完整性和真实性。记住,密钥的安全性至关重要,因此应该使用强大的随机数生成器来生成密钥,并妥善保管。