# PYTHON MD5 針對檔案做hash ```python= import hashlib a='source.docx' def hashfile(filename): with open(filename, "rb") as f: buf = f.read() m = hashlib.md5(buf) return m.hexdigest() print('md5 hash: ' + hashfile(a)) ``` 針對資料夾做hash ```python= import hashlib from pathlib import Path def md5_update_from_file(filename, hash): assert Path(filename).is_file() with open(str(filename), "rb") as f: for chunk in iter(lambda: f.read(4096), b""): hash.update(chunk) return hash def md5_file(filename): return md5_update_from_file(filename, hashlib.md5()).hexdigest() def md5_update_from_dir(directory, hash): assert Path(directory).is_dir() for path in sorted(Path(directory).iterdir()): hash.update(path.name.encode()) if path.is_file(): hash = md5_update_from_file(path, hash) elif path.is_dir(): hash = md5_update_from_dir(path, hash) return hash def md5_dir(directory): return md5_update_from_dir(directory, hashlib.md5()).hexdigest() md5_hash = md5_dir("C:/test/") print(md5_hash) ``` ###### tags: `python` `MD5` `hash` `加密`