了解如何在 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 发行版中都预装了它。
查看下面/etc/group
保存为groups.cvs的内容。
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.txt是groups.csv的重复,因此,尝试同时生成文件的哈希值,如下所示。
您将看到它们具有相同的哈希值,这是因为它们具有完全相同的内容。
$ md5sum groups_list.txt groups.csv bc527343c7ffc103111f3a694b004e2f groups_list.txt bc527343c7ffc103111f3a694b004e2f groups.csv
您可以将文件的哈希值重定向到文本文件并存储并与他人共享。对于上面的两个文件,您可以发出以下命令将生成的哈希值重定向到文本文件以供以后使用:
$ md5sum groups_list.txt groups.csv > myfiles.md5
要检查文件自创建校验和以来是否未被修改,请运行下一个命令。您应该能够看到每个文件的名称以及“OK”。
建议阅读: 在 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 "Example How-Tos" | md5sum - afc7cb02baab440a6e64de1a5b0d0f1b -
$ echo -n "Example How-To" | md5sum - 65136cb527bff5ed8615bd1959b0a248 -
在本指南中,我向您展示了如何为文件生成哈希值,创建校验和以便稍后在 Linux 中验证文件完整性。尽管已经检测到 MD5 算法中的安全漏洞,但 MD5 哈希仍然有用,特别是如果您信任它们的创建方。
因此,验证文件是系统文件处理的一个重要方面,可以避免下载、存储或共享损坏的文件。最后但并非最不重要的是,像往常一样,通过下面的评论表与我们联系以寻求任何帮助,您也可以提出一些重要的建议来改进这篇文章。