import os
import hashlib

def calculate_md5(filename):
    md5_hash = hashlib.md5()
    with open(filename, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b''):
            md5_hash.update(chunk)
    return md5_hash.hexdigest()

def calculate_sha256(filename):
    sha256_hash = hashlib.sha256()
    with open(filename, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b''):
            sha256_hash.update(chunk)
    return sha256_hash.hexdigest()

# SHA-3是美国国家标准与技术研究院(NIST)于2015年发布的一种新的哈希算法。它提供了比SHA-256更高的安全性和更快的速度。
def calculate_sha3_256(filename):
    sha3_256_hash = hashlib.sha3_256()
    with open(filename, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b''):
            sha3_256_hash.update(chunk)
    return sha3_256_hash.hexdigest()

# Blake2是一种快速且安全的哈希算法,它具有与SHA-3相当的安全性,但速度更快。
def calculate_blake2s(filename):
    blake2s_hash = hashlib.blake2s()
    with open(filename, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b''):
            blake2s_hash.update(chunk)
    return blake2s_hash.hexdigest()

def calculate_blake2b(filename):
    blake2b_hash = hashlib.blake2b()
    with open(filename, 'rb') as file:
        for chunk in iter(lambda: file.read(4096), b''):
            blake2b_hash.update(chunk)
    return blake2b_hash.hexdigest()

def compare_folders(folder1, folder2):
    # 获取文件夹1中的所有文件路径
    files1 = []
    for root, dirs, files in os.walk(folder1):
        for file in files:
            files1.append(os.path.join(root, file))

    # 获取文件夹2中的所有文件路径
    files2 = []
    for root, dirs, files in os.walk(folder2):
        for file in files:
            files2.append(os.path.join(root, file))

    # 比较文件夹中的文件MD5值
    for file1, file2 in zip(files1, files2):
        print(f"开始对比{file1} 和 {file2} ")
        md5_1 = calculate_md5(file1)
        md5_2 = calculate_md5(file2)
        if md5_1 != md5_2:
            print(f"{file1} 和 {file2} 不相同")
            return False

    return True

# 示例用法
folder1 = "F:\对比文件是否相同\正常"
folder2 = "F:\对比文件是否相同\异常"
result = compare_folders(folder1, folder2)
if result:
    print("两个文件夹下的所有文件相同")
else:
    print("两个文件夹下的文件不相同")
最后修改:2024 年 03 月 22 日
如果觉得我的文章对你有用,请随意赞赏