一、简介
md5sum计算检验MD5效验码。MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性非常小。
一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。其他两个工具sha256sum和sha512sum的工作方式与md5sum相同。
二、基本命令
$ md5sum --help
Usage: md5sum [OPTION]... [FILE]...
Print or check MD5 (128-bit) checksums.
With no FILE, or when FILE is -, read standard input.
-t, --text read in text mode (default)
-b, --binary read in binary mode
-c, --check read MD5 sums from the FILEs and check them
--tag create a BSD-style checksum
Note: There is no difference between binary and text mode option on GNU system.
The following four options are useful only when verifying checksums:
--quiet don't print OK for each successfully verified file
--status don't output anything, status code shows success
--strict exit non-zero for improperly formatted checksum lines
-w, --warn warn about improperly formatted checksum lines
--help display this help and exit
--version output version information and exit
The sums are computed as described in RFC 1321. When checking, the input
should be a former output of this program. The default mode is to print
a line with checksum, a character indicating input mode ('*' for binary,
space for text), and name for each FILE.
md5sum filename > filename.md5
也可以把多个文件的报文摘要输出到一个md5文件中,这要使用通配符 *,比如某目录下有几个iso文件,要把这几个iso文件的摘要输出到iso.md5文件中,命令如下:
md5sum *.iso > iso.md5
特殊说明:
1)md5sum 是校验文件内容,与文件名是否相同无关
2)md5sum值逐位校验,所以文件越大,校验时间越长。
三、常见功能
1. 验证文件是否被篡改
把下载的文件file和该文件的file.md5报文摘要文件放在同一个目录下,然后用如下命令进行验证:
md5sum -c file.md5
然后如果验证成功,则会输出:OK
2. 验证多个文件
md5sum命令可以一次验证多个文件。如果将散列写入文件,则可以使用该文件检查是否有任何文件已更改。 在这里,我们先将文件的散列写入文件散列,然后使用它来验证没有任何文件已经改变。
$ md5sum file1.txt file2.txt file3.txt > hashes
$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: OK
现在我们将更改file3.txt,在文件末尾添加一个感叹号,然后重新运行该命令。
echo "!" >> file3.txt
$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
可以看到file3.txt已经改变了。
3. 只显示修改过的文件
如果有许多文件需要检查,可能只想显示已更改的文件。 使用--quiet选项,md5sum将只列出已经改变的文件。
$ md5sum --quiet --check hashes
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
4. 递归生成各文件的的MD5值
find ./test_rc1 -type f -print0| xargs -0 md5sum >> rc1_md5.txt
find ./test_rc2 -type f -print0| xargs -0 md5sum >> rc2_md5.txt
5. 比较两文件的MD5值
diff -c rc1_md5.txt rc2_md5.txt
Ref: