md5sum
md5sum
是一个用来计算和验证文件MD5校验和的命令行工具。MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,用于生成文件的唯一固定长度的哈希值,从而可以验证文件的完整性。以下是 md5sum
命令及其常见用法的详细解释:
基本用法
md5sum [文件名]
这个命令将读取指定的文件,计算其MD5校验和,然后输出一个32字符的十六进制哈希值和文件名。例如:
$ md5sum example.txt
d41d8cd98f00b204e9800998ecf8427e example.txt
md5sum
的选项
-
-b, --binary
:强制对文件进行二进制模式读取。 -
-t, --text
:强制对文件进行文本模式读取(默认选项)。 -
-c, --check
:从文件读取MD5校验和,检查和比较每个文件的哈希值。 -
--tag
:使用一个BSD样式格式输出文件MD5值。
应用案例
-
计算文件的MD5值:
当你运行md5sum somefile.txt,你会看到输出类似于:
e2fc714c4727ee9395f324cd2e7f331f somefile.txt
-
校验文件完整性:
可以通过对比原始文件和传输后的文件的MD5值来验证文件是否完整无误。例如,如果你有一个记录了哈希值的文件somefile.md5,其内容可能是:
e2fc714c4727ee9395f324cd2e7f331f somefile.txt
然后你可以运行:
md5sum -c somefile.md5
如果文件未被篡改或损坏,将会输出 somefile.txt: OK
如果一个文件中的任何部分被修改,例如更改了一个字母,它的 MD5 校验和(或哈希值)将会完全不同。这是 MD5 哈希函数的一个重要特性,即所谓的"雪崩效应":即使输入发生微小的变化,生成的哈希值也会显著不同。即使只修改了一个字母,MD5 校验和也发生了显著变化。这就意味着通过比较原始文件和当前文件的 MD5 校验和,你可以很容易地检测文件是否被修改过。
实际案例测试:
关于 MD5 校验和验证文件完整性的正确方法
如果你的目标是检查多个文件(如 somefile.txt
和 anotherfile.txt
)是否被修改过,那么你通常会创建一个包含这些文件的 MD5 校验和列表的文件(例如 examplepkg.md5
),并使用 md5sum
命令来验证这些文件。
创建内容为"hhh"的somefile.txt文件和内容为"jjj"的anotherfile.txt文件
验证文件完整性的步骤
-
创建含有多个文件的 MD5 校验和的文件:
你在某个时刻生成并记录这些文件的 MD5 校验和:
md5sum somefile.txt anotherfile.txt > examplepkg.md5
-
在未来某个时刻验证这些文件的完整性:
在你需要验证文件是否被修改时,可以使用
md5sum
配合-c
选项来检查:md5sum -c examplepkg.md5
md5sum
会读取examplepkg.md5
文件中的内容,并检查对应的文件是否匹配。在上文的例子中,输出应该是:somefile.txt: OK anotherfile.txt: OK
如果将somefile.txt文件的内容从"hhh"修改为"hhj",输出将指出不匹配:
somefile.txt: FAILED anotherfile.txt: OK md5sum: WARNING: 1 computed checksum did NOT match