计算和检查文件的MD5值
命令语法格式
md5sum [OPTION]… [FILE]…
命令描述
命令md5sum为每个文件参数FILE计算一个128位校验和(或指纹,或消息摘要)。
如果参数FILE为’-‘,或者没有指定,则命令md5sum从标准输入中读取数据来计算校验和。md5sum还可以确定文件与校验和是否一致。
在默认输出中,每个文件会对应一行输出,该行由MD5校验和、空格、表示二进制或文本输入模式的标志、文件名这四部分组成。二进制模式用星号(’*’)表示,文本模式用空字符(”)表示。二进制模式是重要系统上的默认模式,否则文本模式是默认模式。
命令支持的选项及含义
控制输出格式
–tag
输出BSD风格的校验和,表示使用的校验和算法。作为GNU扩展,具有特殊字符的文件名通过如上所述方法被转义,在行的开始使用相同的转义指示符’\’。选项–tag隐含了二进制模式,并且禁止与–text一起使用,这会不必要地使输出格式复杂化,同时提供很少的好处。
-z, –zero
在每行的末尾输出一个零字节(NUL),而不是换行符(LF)。
此选项会使md5sum产生其他程序能够解析的输出,即使该输出中包含了嵌入换行符的数据。也不使用文件名转义。
没有指定–zero选项时,如果参数FILE包含反斜杠或换行符,则对应的输出行以反斜杠开头,并且文件名中的每个有问题的字符都使用反斜杠进行转义,即使存在任意文件名,也会使输出明确无误。
文件读取模式
-b, –binary
通过以二进制模式读取文件,并输出’*’标志,将每个输入文件视为二进制文件。这与–text选项相反。
在像GNU这样的不区分二进制文本和文本文件的系统上,该选项仅将每个输入模式标记为二进制:MD5校验和不受影响。除了标准输入是终端时读取标准输入时,此选项是MS-DOS等区分二进制和文本文件的系统的默认选项。
-t, –text
将每个输入文件作为文本处理,通过在文本模式下读取,并输出空字符(”)标志。这与–binary选项相反。这个选项是像GNU这样的系统的默认值,它不区分二进制和文本文件。在其他系统上,当标准输入是终端时,它是读取标准输入的默认值。
如果使用–tag选项,则此模式永远不会默认为。
验证校验和
-c, –check
从每个参数FILE中读取要检查的文件名和校验和信息(不是数据),并报告校验和是否与对应的文件想匹配。这种md5sum模式的输入通常是先前产生“md5sum”校验和的输出。支持三种输入格式:上述的默认输出格式、–tag输出格式、BSD反向模式格式(类似于默认模式,但不使用字符来区分二进制和文本模式)。
对于文件中每个这样的行,md5sum读取指定的文件,并计算其MD5校验和。然后,如果计算出的消息摘要与文件中的行不匹配,则该文件被标记为未通过测试。否则,文件通过测试。默认情况下,对于每个测试通过的行都会向标准输出写入一条信息,指示指定的文件是否通过了测试。所有检查完成后,如果出现任何失败,则会向标准错误发出警告,使用–status选项禁止输出。如果任何对应的文件无法打开或读取,如果任何有效行具有与关联文件不一致的MD5校验和,或者未找到有效行,则md5sum以非零状态退出。否则,它会成功退出。
–ignore-missing
此选项仅在验证校验和(-c, –check)时有用。验证校验和时,对于那些丢失的文件,不要返回失败或报告状态。在给定很大的校验和列表的情况下来验证部分下载文件时,这非常有用。
–quiet
此选项仅在验证校验和(-c, –check)时有用。验证校验和时,不要为每个成功检查的文件生成“OK”消息。验证失败的文件以默认的每行一个文件的格式进行报告。如果存在任何校验和不匹配,请打印一个警告,总结标准错误的失败。
–status
此选项仅在验证校验和(-c, –check)时有用。验证校验和时,不要生成默认的每行一个文件诊断,并且不要输出总结任何故障的警告。打开或读取文件失败仍会导致单个诊断错误。如果所有列出的文件都是可读的,并且与关联的MD5校验和一致,则以成功退出。否则,失败状态代码退出。
-w, –warn
验证校验和时,警告格式不正确的MD5校验和的行。只有在检查输入中的少数几行无有效的情况下,此选项才有用。
–strict
验证校验和时,如果一个或多个输入行无效,则在发出所有警告后,以非零状态退出。
通用选项
–help
显示帮助信息并退出。
–version
显示版本信息。
注意事项
用于检测意外文件损坏,MD5摘要比简单的CRC(由cksum(1)命令提供)更可靠,因为出现两个文件的MD5值相同的概率很小。
但是,不应将其视为检查恶意篡改的安全手段:尽管通过给定MD5指纹来查找文件在目前看来被认为是不可行的,但目前已知可以通过修改某些文件(包括数字证书),以便在使用MD5摘要签名时看起来有效。
为了更安全的散列,可以考虑使用SHA-2(命令sha224sum,sha256sum,sha384sum,sha512sum计算各种长度的校验和(分别为224,256,384,512位),统称为SHA-2哈希),这些命令的用法和选项与md5sum完全相同。或者也可以使用更新的b2sum(1)命令。
这里所述的注意事项也同样适用于sha1sum(1)。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/md5sum
查看info手册:info ‘(coreutils) md5sum invocation’
参考文献
- man 1 md5sum, version GNU coreutils 8.28
更新日志
- 06/28/2018 创建文章
- 07/08/2018 修改命令描述、注意事项部分