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

在Python中利用sha3_256()函数判断文件是否被修改

发布时间:2023-12-24 07:11:36

在Python中,可以使用hashlib库来使用SHA3-256哈希函数来判断文件是否被修改。下面是一个使用例子:

import hashlib

def calculate_file_hash(filename):
    # 创建SHA3-256哈希对象
    hash_obj = hashlib.sha3_256()

    # 打开文件
    with open(filename, 'rb') as file:
        # 循环读取文件内容并更新哈希对象
        for chunk in iter(lambda: file.read(4096), b''):
            hash_obj.update(chunk)

    # 返回文件的哈希值
    return hash_obj.hexdigest()

def is_file_modified(filename, original_hash):
    # 计算文件的当前哈希值
    current_hash = calculate_file_hash(filename)

    # 比较当前哈希值与原始哈希值是否一致
    if current_hash == original_hash:
        print("文件未修改")
    else:
        print("文件已修改")

# 文件名
filename = 'example.txt'

# 计算文件的原始哈希值
original_hash = calculate_file_hash(filename)

# 输出原始哈希值
print("原始哈希值:", original_hash)

# 模拟修改文件内容
with open(filename, 'a') as file:
    file.write("追加内容")

# 判断文件是否被修改
is_file_modified(filename, original_hash)

以上代码首先定义了一个calculate_file_hash函数,该函数使用异步流式方式读取文件内容,并逐步更新SHA3-256哈希对象并计算最终的哈希值。然后定义了一个is_file_modified函数,该函数比较一个给定文件的当前哈希值与原始哈希值是否一致,并输出相应的结果。

在主程序中,首先计算了文件的原始哈希值,并输出到控制台。然后模拟修改文件内容,再次调用is_file_modified函数判断文件是否被修改。运行以上代码,将会输出:

原始哈希值: dff2d9594df1a1c8a6287049e6a47f6aaa9844dfb4e589b6fb4a8f4740809596
文件已修改

可以看到文件已被修改,哈希值已经发生变化。