macOS 文件哈希值计算指南
在文件传输、下载验证或数据完整性检查中,计算文件哈希值是必不可少的操作。macOS 提供了多种计算哈希值的方法,本文将详细介绍各种算法的使用方式。
常用哈希算法
MD5
MD5 虽然不再适合安全用途,但在文件校验场景中仍然广泛使用:
# 使用 openssl
openssl dgst -md5 filename.bin
openssl md5 filename.bin
# 使用系统内置 md5 命令
md5 -q filename.bin # 只输出哈希值
md5 -sq "text content" # 计算字符串的 MD5
SHA1
相比 MD5 更安全,但同样不推荐用于加密场景:
openssl dgst -sha1 filename.bin
openssl sha1 filename.bin
SHA256
目前推荐的安全哈希算法,广泛用于文件验证:
openssl sha256 filename.bin
openssl dgst -sha256 filename.bin
# 使用 shasum 命令
shasum -a 256 filename.bin
SHA512
更高强度的哈希算法:
openssl sha512 filename.bin
shasum -a 512 filename.bin
高级用法
带密钥的哈希(HMAC)
用于需要密钥验证的场景:
# HMAC-MD5
openssl md5 -hmac "your_secret_key" filename.bin
# HMAC-SHA256
openssl sha256 -hmac "your_secret_key" filename.bin
批量计算多个文件
# 计算目录下所有文件的 SHA256
find /path/to/directory -type f -exec shasum -a 256 {} \;
# 生成校验文件
shasum -a 256 *.bin > checksums.txt
验证文件完整性
最实用的验证脚本,直接返回结果:
# 验证单个文件
[ "$(shasum -a 256 file.dat | awk '{print $1}')" = "expected_sha256_value" ] && echo "✅ 验证通过" || echo "❌ 验证失败"
# 批量验证
shasum -a 256 -c checksums.txt
实用技巧
快速对比两个文件
# 方法1:直接对比哈希值
diff <(md5 file1.bin) <(md5 file2.bin)
# 方法2:使用 cmp 命令(更高效)
cmp file1.bin file2.bin && echo "文件相同" || echo "文件不同"
监控文件变化
# 保存文件当前哈希值
echo "$(shasum -a 256 important_file.txt)" > file_hash.txt
# 检查文件是否被修改
shasum -a 256 -c file_hash.txt
性能对比
对于大文件,不同算法的性能差异明显:
- MD5: 最快,但安全性最低
- SHA1: 速度适中,安全性一般
- SHA256: 推荐使用,安全性与性能平衡
- SHA512: 最安全,但速度最慢
在线工具
如果不方便使用命令行,可以使用网页版工具:File Hash Calculator
该工具在本地浏览器运行,计算过程不会上传文件,隐私无忧。
小贴士: 在下载重要文件时,建议同时下载官方提供的校验文件(通常是 .sha256
或 .md5
文件),用于验证下载完整性。毕竟,谁也不想在关键时刻发现文件损坏。