下载软件时给定的哈希有什么用?

要了解为什么会有哈希,您必须先了解哈希是什么。

散列函数是一种函数,它采用可变长度的输入(例如文件),并产生固定长度的输出(散列)。

一个好的哈希函数需要满足一些属性–

  • 相同的输入应始终提供相同的输出(哈希函数是确定性的)
  • 即使稍微改变输入也应该彻底改变哈希值
  • 给定哈希,很难找到会产生哈希的输入

第一个和第二个属性非常适合检查下载的完整性,以防随机/非故意损坏。

第三个属性可用于防止在传输过程中恶意更改程序包。

页面上给出的哈希值是文件的正确哈希值。 如果下载文件,并且自己从文件中计算哈希,并且哈希与正确的哈希匹配,则您知道(除非哈希算法被破坏)文件没有被损坏(有意或无意)。

哈希值用作根据数学算法计算的文件签名。

它基于文件的二进制值,并用于确保文件未更改且为整数。

这就是某些网站(例如Linux官方网站)为Linux发行版或可执行安装程序的ISO映像提供哈希值的原因。

下载文件后,您可以使用程序或在线工具计算其哈希值。 如果两个哈希值(制造商/网站提供的值与您计算出的值)匹配,则您的文件为整数且合法。 如果没有,您就会遇到问题(恶意软件或文件损坏)。

为了让您更清楚地了解其工作原理,我将使用一个实际示例:字符串“ red ”的MD5哈希值是bda9643ac6601722a28f238714274da4。

如果将字符串更改为“ Red ”,则哈希变为ee38e4d5dd68c4e440825018d549cb47。

您可以看到,只需更改字母,哈希值将变得完全不同。

哈希用于验证下载的完整性,以确保文件没有损坏。 您可以通过在文件上运行哈希算法(例如SHA1和MD5)来验证文件,然后查看哈希文件是否与算法的输出匹配。 现在,大多数人实际上不会使用哈希并检查它是否匹配,但是它始终是一个不错的选择,尤其是对于那些需要花很长时间才能下载并要安装在某个地方的较大文件(例如linux iso的大型安装程序)。