网站搜索

了解如何在 Linux 中使用 MD5 校验和生成和验证文件


校验和是一个数字,用作数据中正确数字的总和,稍后可用于检测存储或传输过程中数据中的错误。 MD5消息摘要 5)和可用作校验和来验证 Linux 文件系统中的文件或字符串。

MD5 和是针对特定文件运行 MD5 算法而产生的 128 位字符串(数字和字母)。 MD5 算法是一种流行的哈希函数,它生成称为哈希值的 128 位消息摘要,当您为特定文件生成一个哈希值时,无论生成多少次,它在任何机器上都不会发生变化。

通常很难找到两个产生相同字符串的不同文件。因此,您可以使用md5sum来检查数字数据的完整性,确定您下载的文件或ISO是远程文件或ISO的逐位副本。

建议阅读: 进度 – 监控 Linux 中(cp、mv、dd、tar 等)命令的进度

在 Linux 中,md5sum 程序计算并检查文件的 MD5 哈希值。它是 GNU Core Utilities 包的组成部分,因此预装在大多数(如果不是全部)Linux 发行版上。

看一下下面保存为 groups.cvs/etc/group 的内容。

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,aaronkilik
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:aaronkilik
floppy:x:25:
tape:x:26:
sudo:x:27:aaronkilik
audio:x:29:pulse
dip:x:30:aaronkilik

下面的md5sums命令将为文件生成一个哈希值,如下所示:

md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

当您尝试通过删除第一行 root:x:0: 来更改文件内容,然后再次运行该命令时,请尝试观察哈希值:

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

您会注意到哈希值现在已更改,表明文件的内容已更改。

现在,放回文件的第一行 root:x:0: 并将其重命名为 group_file.txt 并运行以下命令以再次生成其哈希值:

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

从上面的输出来看,即使文件已重命名,哈希值仍然与其原始内容相同。

重要md5 和仅验证/使用文件内容而不是文件名。

文件 groups_list.txtgroups.csv 的副本,因此,请尝试同时生成文件的哈希值,如下所示。

您将看到它们都具有相同的哈希值,这是因为它们具有完全相同的内容。

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

您可以将文件的哈希值重定向到文本文件中并存储并与其他人共享。对于上面的两个文件,您可以发出以下命令将生成的哈希值重定向到文本文件以供以后使用:

md5sum groups_list.txt  groups.csv > myfiles.md5

要检查文件自创建校验和以来是否未被修改,请运行下一个命令。您应该能够查看每个文件的名称以及“确定”

建议阅读: 按 Linux 内存使用情况查找前 15 个进程

-c--check 选项告诉 md5sums 命令从文件中读取 MD5 和并检查它们。

md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

请记住,创建校验和后,您无法重命名文件,否则当您尝试使用新名称验证文件时,您会收到“没有此类文件或目录”错误。

例如:

mv groups_list.txt new.txt
$ mv groups.csv file.txt
$ md5sum -c  myfiles.md5
md5sum: groups_list.txt: No such file or directory
groups_list.txt: FAILED open or read
md5sum: groups.csv: No such file or directory
groups.csv: FAILED open or read
md5sum: WARNING: 2 listed files could not be read

这个概念也适用于类似的字符串,在下面的命令中,-n表示不输出尾随换行符:

echo -n "Tecmint How-Tos" | md5sum - 

afc7cb02baab440a6e64de1a5b0d0f1b  -
echo -n "Tecmint How-To" | md5sum - 

65136cb527bff5ed8615bd1959b0a248  -

在本指南中,我向您展示了如何生成文件的哈希值,创建校验和以供以后在 Linux 中验证文件完整性。尽管已检测到 MD5 算法中的安全漏洞,但 MD5 哈希值仍然有用,特别是如果您信任创建它们的一方。

因此,验证文件是系统上文件处理的一个重要方面,以避免下载、存储或共享损坏的文件。最后但并非最不重要的一点是,像往常一样通过下面的评论表联系我们寻求任何帮助,您也可以提出一些重要的建议来改进这篇文章。