Linux 常用命令 -md5sum【计算和校验文件的MD5哈希值】
简介
md5sum 源于 “MD5 message-digest algorithm”,即 MD5 消息摘要算法。这个命令用于计算和校验文件的 MD5 哈希值。MD5 是一种被广泛使用的密码学哈希函数,它将任意长度的数据映射为固定长度(128位)的哈希值,通常以32位十六进制数表示。md5sum 命令通过读取文件内容,使用 MD5 算法生成该文件的唯一“指纹”(哈希值)。这个指纹可以用于验证文件在传输或存储过程中是否发生更改。
使用方式
md5sum [OPTION]... [FILE]...
常用选项
-b, --binary
:以二进制模式读取文件。-c, --check
:从指定文件中读取 MD5 校验和并进行校验。--tag
:创建 BSD 风格的检验和。-t, --text
:以文本模式读取文件(默认选项)。-z, --zero
:每行输出结果以空字符NUL
结尾,而不是换行符,并且禁用文件名转义。--help
:显示帮助信息并退出。--version
:显示帮助信息并退出。
以下五个选项仅在校验校验和时有用:
--ignore-missing
:忽略缺失的文件,不报错或报告状态。--quiet
:不打印成功校验文件的 “OK” 信息。--status
:不输出任何内容,仅通过退出状态码来表示成功与否。--strict
:如果校验和行的格式不正确,则以非零状态码退出。-w, --warn
:对校验和行格式不正确的情况输出警告信息。
参考示例
计算单个文件的 MD5 值
md5sum 文件名
使用 md5sum
加文件名可以直接输出该文件的 MD5 值:
jay@jay-home:~/test$ md5sum test.c
7d7f9c1dc810781d1f0fcc6681122233 test.c
计算多个文件的 MD5 值
md5sum 文件1 文件2 文件3...
使用 md5sum
加多个文件名可以输出多个文件的 MD5 值:
jay@jay-home:~/test$ md5sum test.c test.txt hello.txt
7d7f9c1dc810781d1f0fcc6681122233 test.c
d41d8cd98f00b204e9800998ecf8427e test.txt
6f5902ac237024bdd0c176cb93063dc4 hello.txt
将计算的 MD5 值保存到文件中
md5sum 文件1 文件2 > 文件.md5
使用重定向符 >
将 md5sum
的输出结果保存到指定文件中:
jay@jay-home:~/test$ md5sum test.c test.txt hello.txt > checksum.txt
jay@jay-home:~/test$
校验文件 MD5 值
md5sum -c 文件.md5
使用 -c
选项对指定文件中的校验和进行检验并输出检验结果:
jay@jay-home:~/test$ md5sum -c checksum.txt
test.c: OK
test.txt: OK
hello.txt: OK
注意事项
-
当不提供
FILE
或FILE
为-
时,从标准输入中读取数据。 -
校验和的计算方法遵循 RFC 1321 的描述。进行校验时,输入内容应该是该程序之前的输出结果。默认模式是为每个文件打印一行,包含校验和、一个空格、一个指示输入模式的字符(二进制模式为
*
,文本模式或二进制模式不重要时为空格),以及文件名。在 GNU 系统上,二进制模式和文本模式没有区别。 -
MD5 算法存在安全漏洞,如容易受到括碰撞攻击、字典攻击等攻击方式,因此不适合用于对安全性要求高的场景。