在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 文件已修改
可以看到文件已被修改,哈希值已经发生变化。
