[Linux] 常用命令之【md5sum(MD5校验)】

发布时间 2024-01-12 10:08:17作者: 千千寰宇

0 序

  • 本文主要参考自:

1 命令概述

1.1 用途

  • md5sum : 用于计算和校验文件的MD5值。
$ echo "hello world" | md5sum.ex
6f5902ac237024bdd0c176cb93063dc4 *-

md5sum 常常被用来【验证】网络文件、第三方提供的文件的完整性/正确性,防止文件被人篡改**。在日常工作当中,我们可以用来判断重要文件是否被篡改。

1.2 语法

md5sum [选项] 文件

该命令支持的选项有:

选项 说明
-b 以二进制模式读取文件
-t 以文本模式读入文件内容
-c 根据已生成的md5值,对现存文件进行校验
-w 检查输入的md5信息有没有非法行,若有则输出相应信息
–status 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断

1.3 使用

1.3.1 计算单文件的MD5值

如果要获取到一个文件的 MD5 值,那么命令格式如下:

# 语法
md5sum 文件名

# 示例
md5sum log.txt
b2c1a88f8bccaa525e4b15342bd30ceb *log.txt

1.3.2 一段字符串的MD5值

也可以通过管道符将一段字符串传递给 md5sum 命令,然后获取这个字符串的 MD5 值:

# 语法
echo 字符串 | md5sum

# 示例
$ echo "hello world" | md5sum
6f5902ac237024bdd0c176cb93063dc4 *-

1.3.3 校验结果输出到文件

我们可以将输出的校验和重定向到一个文件中,以备后用。命令格式如下:

# 语法
md5sum 文件名 > 保存校验和文件名

# 示例
md5sum test.txt > test.txt.md5

1.3.4 校验多个文件

如果要校验多个文件,命令格式如下:

# 语法
md5sum 文件1 文件2 文件3 ...

# 示例
$ md5sum.exe 111111.png 1.jpg
b2c1a88f8bccaa525e4b15342bd30ceb *111111.png
8cd3699ec20c653f2660eab41d038673 *1.jpg

当使用多个文件时,输出中会在每行中都包含单个文件的校验和。

1.3.5 检查文件的 MD5 值

我们可以将一个文件的 MD5 值保存到另一个文件中,然后通过 md5sum -c 命令来对其进行检查,因为生成的 MD5 内容中有文件标识,所以能找到原文件。

$ md5sum.exe 111111.png > 111111.png.md5

$ cat 111111.png.md5
b2c1a88f8bccaa525e4b15342bd30ceb *111111.png

$ md5sum.exe -c 111111.png.md5
111111.png: OK

1.3.6 批量检查所有的 MD5 文件

如果需要用所有的 .md5 信息来检查所有的文件。命令格式如下:

md5sum -c *.md5

1.3.7 对目录进行校验

校验和是从文件中计算得来的。对目录计算校验和意味着需要对目录中的所有文件以递归的方式进行计算。可以使用 md5deep 命令来对目录进行校验。

当然这里也可以取巧使用 find 命令来递归计算校验和,命令格式如下:

# 计算目录校验和语法
find 目录路径 -type f -print0 | xargs -0 md5sum >> 校验和文件名
# 检查目录校验和语法
md5sum -c 校验和文件名

# 计算目录校验和示例
find /root/temp -type f -print0 | xargs -0 md5sum >> directory.md5
# 检查目录校验和示例
md5sum -c directory.md5

X 参考文献