有时你会看到MD5、SHA-1或SHA-256散列显示在你的互联网旅行下载,但不知道他们是什么。这些看似随机的文本字符串允许您验证下载的文件是否已损坏或被篡改。您可以使用Windows、macOS和Linux中内置的命令来实现这一点。
哈希是密码算法的产物,用于产生字符串。不管输入数据的大小,这些字符串通常都有固定的长度。看看上面的图表,你会发现“狐狸”和“红狐跳过蓝狗”的输出长度相同。
现在将图表中的第二个示例与第三个、第四个和第五个进行比较。您将看到,尽管输入数据中发生了非常小的更改,但得到的哈希值彼此都非常不同。即使有人修改了一小块输入数据,哈希值也会发生巨大的变化。
MD5、SHA-1和SHA-256都是不同的哈希函数。软件创建者通常下载一个文件,比如Linux.iso文件,甚至Windows.exe文件,然后通过哈希函数运行它。然后,他们会在自己的网站上提供一份官方的散列列表。
这样,您就可以下载该文件,然后运行哈希函数来确认您拥有真实的原始文件,并且在下载过程中该文件没有损坏。正如我们在上面看到的,即使对文件做一点小的更改,也会极大地改变散列。
如果你有一个非官方来源的文件,并且你想确认它是合法的,那么这些也很有用。假设你有一个从某处得到的Linux.ISO文件,你想确认它没有被篡改。您可以在Linux发行版的网站上在线查找特定ISO文件的散列。然后,您可以通过计算机上的哈希函数运行它,并确认它与您期望的哈希值匹配。这将确认您拥有的文件与Linux发行版网站上提供的供下载的文件完全相同,没有任何修改。
注意,MD5和SHA-1函数存在“冲突”。这些文件是多个不同的文件,例如,一个安全文件和一个导致相同MD5或SHA-1哈希的恶意文件。所以如果可能的话你应该选择SHA-256。
考虑到这一点,让我们看看如何检查下载的文件的散列,并将其与给定的文件进行比较。下面是针对Windows、macOS和Linux的方法。如果在同一个文件上使用相同的哈希函数,哈希值将始终相同。使用哪种操作系统并不重要。
由于PowerShell,在Windows上无需任何第三方软件即可完成此过程。
若要开始,请通过启动“开始”菜单中的“Windows PowerShell”快捷方式打开PowerShell窗口。
运行以下命令,替换“C:\path\to”\文件.iso“要查看哈希值的任何文件的路径:
Get-FileHash C:\path\to\file.iso根据文件大小、使用的算法以及文件所在驱动器的速度,生成文件的哈希值需要一些时间。
默认情况下,该命令将显示文件的SHA-256哈希值。但是,如果需要MD5、SHA-1或其他类型的散列,可以指定要使用的散列算法。
运行以下命令之一以指定不同的哈希算法:
Get-FileHash C:\path\to\file.iso -Algorithm MD5 Get-FileHash C:\path\to\file.iso -Algorithm SHA1 Get-FileHash C:\path\to\file.iso -Algorithm SHA256 Get-FileHash C:\path\to\file.iso -Algorithm SHA384 Get-FileHash C:\path\to\file.iso -Algorithm SHA512 Get-FileHash C:\path\to\file.iso -Algorithm MACTripleDES Get-FileHash C:\path\to\file.iso -Algorithm RIPEMD160将哈希函数的结果与您希望看到的结果进行比较。如果是相同的值,则表示文件没有被损坏、篡改或以其他方式更改。
macOS包含用于查看不同类型散列的命令。要访问它们,请启动终端窗口。您可以在Finder>Applicati***>Utilities>Terminal找到它。
md5命令显示文件的md5哈希:
md5 /path/to/fileshasum命令默认显示文件的SHA-1哈希。这意味着以下命令是相同的:
shasum /path/to/file shasum -a 1 /path/to/file要显示文件的SHA-256哈希,请运行以下命令:
shasum -a 256 /path/to/file在Linux上,访问终端并运行以下命令之一以查看文件的哈希,具体取决于要查看的哈希类型:
md5sum /path/to/file sha1sum /path/to/file sha256sum /path/to/file虽然哈希可以帮助您确认文件没有被篡改,但这里仍然有一种攻击途径。攻击者可以控制Linux发行版的网站并修改其上显示的哈希值,或者如果您通过HTTP而不是加密的HTTPS访问网站,则攻击者可以执行中间人攻击并在传输过程中修改网页。
这就是为什么现代Linux发行版通常提供的不仅仅是网页上列出的哈希值。它们对这些散列进行加密签名,以帮助抵御可能试图修改散列的攻击者。如果您想绝对确保哈希和文件没有被篡改,那么您需要验证加密签名以确保哈希文件实际上是由Linux发行版签名的。
相关:如何验证linuxiso的校验和并确认它没有被篡改
验证加密签名是一个更复杂的过程。阅读我们的指南,以验证Linux iso没有被篡改的完整说明。
图片来源:豪尔赫·斯托尔菲/维基媒体
... 大多数人认为他们永远不需要担心这些术语指的是什么或者它们与下载过程的关系。但有时知道是有益的。 ...
... 然而,这个系统还远远不够完善,这就是为什么许多人喜欢使用文件哈希生成和检查工具来交叉引用他们的软件。想了解有关加密和哈希的更多信息吗?这里有十个基本的加密术语,每个人都应该知道和理解! ...
...“VirusTotal Lookup”以在VirusTotal网站上打开浏览器,并传入哈希以进行检查。 VirusTotal存储已知恶意软件和其他恶意文件的哈希值。如果您不确定某个文件是否安全,这是一种简单的检查方法,即使您不再有权访问该文件。 如果...
...你只需要知道原始文件的校验和。 md5、sha-1和sha-256和有什么区别? 校验和是确保文件没有错误的有用方法。如果由于下载问题或硬盘驱动器问题而发生随机错误,那么产生的校验和将不同,即使只是一个很小的错误。 然而,这...
...实世界的碰撞攻击,打破了SHA-1。这就是一切的含义。 什么是沙一段(sha-1)? SHA-1中的SHA代表安全散列算法,简单地说,您可以把它看作是一种数学问题或方法,它对放入其中的数据进行置乱。它由美国****局开发,是许多用于...
...进入确切的步骤之前,让我们确切地解释一下该过程需要什么: 您将像往常一样从Linux发行版的网站或其他地方下载Linux ISO文件。 您将从Linux发行版的网站下载校验和及其数字签名。这可能是两个单独的TXT文件,或者您可能会...
...会变得有点复杂,所以最好从头开始。。。 刚才发生了什么? Google公开打破了web加密的主要算法之一SHA-1。该公司的研究人员表明,只要有足够的计算能力——从一个GPU计算大约110年,只需其中一个阶段——你就可以产生碰撞...