Linux 中对文件进行哈希计算

在 Linux 中,对文件进行哈希计算最直接的方法是使用系统自带的专门命令。这些命令以 算法名 + sum 的形式命名,使用起来非常方便。

下面是几种主流哈希算法的计算命令:

哈希算法 命令 输出长度 (十六进制) 安全性说明
MD5 md5sum 32 个字符 速度最快,但已被证明存在安全漏洞,不推荐用于安全敏感场景。
SHA-1 sha1sum 40 个字符 安全性比MD5略高,但同样已被认为不够安全,建议避免使用。
SHA-256 sha256sum 64 个字符 目前最常用且推荐的算法,安全性高,是验证文件完整性的首选。
SHA-512 sha512sum 128 个字符 安全性极高,属于SHA-2家族,适用于对安全性要求非常高的场景。

核心用法与示例

1. 计算单个文件的哈希值

这是最基础的操作,直接在命令后跟上文件名即可。

# 计算文件的 SHA-256 哈希值
sha256sum myfile.txt

输出示例

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  myfile.txt

输出结果由两大部分组成:哈希值文件名

2. 计算并保存哈希值到文件

为了日后验证,通常会将计算结果保存到一个文件中。

# 计算哈希值并将结果保存到 myfile.txt.sha256 文件中
sha256sum myfile.txt > myfile.txt.sha256

myfile.txt.sha256 文件的内容与上面的输出示例完全一样。

3. 验证文件完整性(校验)

这是最常用的功能,用于检查文件是否被修改。使用 -c (或 --check) 选项,让命令读取之前保存的哈希文件并进行比对。

# 使用 -c 选项进行校验
sha256sum -c myfile.txt.sha256

如果文件完整,输出

myfile.txt: OK

如果文件已被修改,输出

myfile.txt: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

4. 计算多个文件的哈希值

只需将多个文件名依次列出即可。

sha256sum file1.txt file2.txt file3.txt

高级用法与技巧

  • 处理标准输入:如果你需要计算一段文本或命令输出的哈希值,而不是文件,可以将命令用管道符(|)传递。 bash echo -n "Hello, World!" | sha256sum

  • 处理大文件:对于非常大的文件(如ISO镜像、数据库备份),上述命令同样有效。它们通常被优化为流式处理,不会将整个文件加载到内存中。此外,也有一些第三方工具如 slashsumhashdeep可以提供多线程加速等功能。

总结

在日常工作中,使用 sha256sum 命令就足以满足绝大部分的文件完整性校验需求。它的用法简单,安全性高,是替代 md5sumsha1sum 的理想选择。