如何在 Windows/Mac/Linux 检查 MD5 校验和
← 返回博客
如何在各操作系统检查 MD5 校验和
· 5 分钟阅读
什么是 MD5 校验和
MD5 校验和(Checksum)是文件内容的 MD5 哈希值,用于验证文件完整性。软件发布者通常在下载页面旁边提供文件的 MD5 校验和,你下载完成后计算本地文件的 MD5 并与之比较,如果一致则说明文件完整未被损坏。
在 Linux 上检查 MD5 校验和
# Calculate MD5 of a single file
md5sum filename.zip
# Output: d41d8cd98f00b204e9800998ecf8427e filename.zip
# Verify against a known hash
echo "d41d8cd98f00b204e9800998ecf8427e filename.zip" | md5sum -c
# Output: filename.zip: OK (or: FAILED)
# If publisher provides a .md5 file
md5sum -c filename.zip.md5
# Checks each file listed in the .md5 file
# Calculate MD5 for all files in directory
md5sum /path/to/directory/* > checksums.md5
md5sum -c checksums.md5 # Verify later
在 macOS 上检查 MD5 校验和
# Method 1: md5 command (macOS native)
md5 filename.zip
# Output: MD5 (filename.zip) = d41d8cd98f00b204e9800998ecf8427e
# Method 2: md5sum (from Homebrew coreutils)
brew install coreutils
gmd5sum filename.zip
# Method 3: openssl (built-in)
openssl md5 filename.zip
# Method 4: certutil (available via Homebrew)
# One-liner comparison
[ "$(md5 -q filename.zip)" = "expected_hash_here" ] && echo "OK" || echo "FAIL"
在 Windows 上检查 MD5 校验和
# PowerShell (Windows 7+): Get-FileHash
Get-FileHash filename.zip -Algorithm MD5
# One-liner comparison in PowerShell
$expected = "d41d8cd98f00b204e9800998ecf8427e"
$actual = (Get-FileHash filename.zip -Algorithm MD5).Hash.ToLower()
if ($expected -eq $actual) { Write-Host "MATCH - File OK" -ForegroundColor Green }
else { Write-Host "MISMATCH - File corrupted!" -ForegroundColor Red }
# Command Prompt (older Windows): certutil
certutil -hashfile filename.zip MD5
# Also supports: SHA1, SHA256, SHA384, SHA512
批量验证多个文件
当需要验证多个文件时,通常会有一个包含所有文件哈希的清单文件(通常是 .md5 或 checksums.txt)。格式是每行一个条目:哈希值加两个空格加文件名。
# checksums.md5 file format:
d41d8cd98f00b204e9800998ecf8427e file1.tar.gz
5d41402abc4b2a76b9719d911017c592 file2.tar.gz
b1946ac92492d2347c6235b4d2611184 file3.tar.gz
# Linux: verify all at once
md5sum -c checksums.md5
# file1.tar.gz: OK
# file2.tar.gz: OK
# file3.tar.gz: FAILED
# PowerShell batch verification script
Get-Content checksums.md5 | ForEach-Object {
$parts = $_ -split " "
$expected = $parts[0]
$file = $parts[1]
$actual = (Get-FileHash $file -Algorithm MD5).Hash.ToLower()
if ($expected -eq $actual) { "$file : OK" } else { "$file : FAILED" }
}
常见问题:为什么哈希不匹配
- 文件下载不完整(网络中断后重新下载,可能得到一个部分完整的文件)
- 下载了错误的文件版本(官方已更新文件,但校验和是旧版的)
- 复制哈希值时包含了额外的空格或换行符
- 大小写不一致(F5 vs f5 在 MD5 中等效,但某些比较可能区分大小写)
- 文件在存储过程中损坏(磁盘故障、传输错误)
SHA256 vs MD5 校验和:应该用哪个
对于文件完整性校验(检测意外损坏),MD5 仍然有效且速度更快。对于防止恶意篡改,应该使用 SHA256 或更强的哈希。现代软件发布(如 Linux ISO、Docker 镜像)通常同时提供 MD5 和 SHA256 校验和,建议使用 SHA256 进行验证以获得更高的安全保障。
立即尝试在线工具,无需安装,免费使用。
打开工具 →
立即免费使用相关工具
免费使用 →