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镜像、数据库备份),上述命令同样有效。它们通常被优化为流式处理,不会将整个文件加载到内存中。此外,也有一些第三方工具如
slashsum或hashdeep可以提供多线程加速等功能。
总结
在日常工作中,使用 sha256sum 命令就足以满足绝大部分的文件完整性校验需求。它的用法简单,安全性高,是替代 md5sum 和 sha1sum 的理想选择。