Py学习  »  Python

如何在python中生成与OS无关的文件散列?

kng • 5 年前 • 459 次点击  

我正在尝试使用python中的hashlib库,通过将文件内容读取为4096B的二进制块来散列文件。

更有趣的是,该文件存在于git repo中,当从Windows和Mac推送到远程服务器时,它会为这两种情况生成不同的散列。

这是下面生成不同散列的代码。

def get_file_hash(file_path: str) -> str:
    hash_md5 = hashlib.md5()
    with open(file_path, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

作为快速修复,我们将“\r\n”替换为“\n”

def get_file_hash(file_path: str) -> str:
    hash_md5 = hashlib.md5()
    with open(file_path, "r") as f:
        for chunk in f.readlines():
            encoded_chunk = chunk.encode("utf-8").replace(b"\r\n", b"\n")
            print(encoded_chunk)
            hash_md5.update(encoded_chunk)
    return hash_md5.hexdigest()

这是一种强有力的方法吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53593
 
459 次点击  
文章 [ 1 ]  |  最新文章 5 年前