我正在尝试使用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()
这是一种强有力的方法吗?