filesaudit.com

2026/9/5

如何批量计算文件夹内所有文件的MD5与SHA-256哈希值

批量计算文件夹里所有文件的 MD5 和 SHA-256 哈希值,本质上是在做文件完整性快照。无论是为了归档备份、排查重复文件、验证下载的软件安装包是否被篡改,还是为后续的取证比对留下基准,哈希值是唯一能快速判断“文件是否一字节都没变”的技术手段。MD5 计算速度快,历史兼容性好,常用于初步去重和日常校验;SHA-256 抗碰撞性更强,已成为合规、数字调查和软件分发的主流标准。两者通常一起记录,用 MD5 快速筛查,用 SHA-256 作为正式证据链的锚点。如果你需要把结果沉淀成带时间戳的专业报告,而不是散落的文本日志,可以用 FilesAudit 这类平台一次性提取元数据并生成可归档的 PDF,技术上它只负责记录和比对,不做法律上的真实性判定。

在 Windows 上最直接的方式是 PowerShell。打开 PowerShell 进入目标目录,运行 Get-ChildItem -Recurse -File | Get-FileHash -Algorithm MD5, 然后把输出导向文件即可。若要同时得到 MD5 和 SHA-256,可以先用 MD5 再用 SHA256 算法分别运行,或者写一个小循环把结果写进 CSV。命令本身会遍历所有子文件夹,默认会把哈希、算法、相对路径和最后写入时间一起列出,方便后续审计。习惯旧版命令行的用户也可以用 certutil -hashfile 文件名 MD5,但这对批量操作不友好,需要配合 for 循环。

Linux 和 macOS 的命令行体验更统一。终端进入文件夹后,find . -type f -exec md5sum {} \; > md5.txt 能一次性导出当前目录及所有子目录的文件 MD5,sha256sum 同理。想要两列一起记录,常用的做法是先用 find 生成文件列表,再用 xargs 并行调用 md5sum 和 sha256sum。macOS 自带的 md5 命令输出格式与 Linux 不同,批量时建议统一用 coreutils 的 md5sum 或 sha256sum,避免解析错误。需要保留中文路径时,确保终端编码为 UTF-8,否则文件名会被乱码。

跨平台或需要自定义格式时,Python 脚本最稳。思路很简单:用 os.walk 递归遍历,打开文件以二进制流分块读取,分别用 hashlib.md5() 和 hashlib.sha256() 更新,最后把文件名、相对路径、大小、修改时间、两个哈希值写进 CSV。分块读取可以避免大文件占用内存,加入 try except 能跳过权限不足的文件。脚本的好处是可以统一命名规范,比如把哈希值和文件名映射到同一个表格,方便导入到证据管理系统,也能按需过滤后缀如 jpg、mp4、pdf 等。

实际操作中有几个细节经常被忽略。路径里包含空格或中文时,find 和 xargs 必须加引号处理,否则会截断;子文件夹深度很大时,find 的 -P 参数和并行参数 -P 8 能显著提速;重复文件名只在不同目录出现,哈希相同才代表内容相同,文件名一致并不等于文件一致;哈希值本身不会告诉你文件内容是否合法,只能证明“这个文件在计算时与另一份是否相同”。如果要做司法或合规存证,还需要配合时间戳、操作人记录以及不可篡改的报告封存。

当文件夹规模上千、上万,或需要同时提取 EXIF、IPTC、XMP、视频流信息、文档作者修改记录等元数据时,本地命令行就会变得繁琐。这时可以考虑本地批量分析工具,例如 桌面版批量分析工具 支持无限制的本地批量处理,不上传文件即可生成标准化的哈希和元数据报告。FilesAudit 在线平台则适合快速验证单文件或小批量,支持 200 多种格式,支持的格式 涵盖图片、视频、音频、办公文档、压缩包、CAD、源码等,上传后自动给出 MD5、SHA-256、CRC32 以及完整的技术元数据快照。

把批量哈希当成工作流的一部分,比单纯跑一次命令更有价值。建议先确定范围,导出基准清单并用时间戳归档,后续任何增量检查都与基准对比;对关键文件同时保存 MD5 和 SHA-256,并把结果写入不可轻易修改的报告;定期用同样的脚本和环境重新计算,避免不同工具输出格式差异导致误判。需要更系统的校验思路,可以参考 哈希校验完整指南 中的实践方法。最终,哈希只是技术证据,它能客观证明文件是否被修改,不能单独证明文件的来源或合法性,这一点在取证和合规场景中必须明确区分。

Ready to see what's hidden in your own files? Upload a file to FilesAudit and get a free forensic metadata report in seconds — no registration required.