1

这个问题可能听起来很傻,但是在浏览任何计算机语言站点时,我通常会遇到写在括号内或语言下载链接旁边的 MD5 值。

为什么提供MD5?它在那里有什么用?它对下载过程有帮助吗?那里给出了哪个值的MD5?是否有发布版本的 MD5 值。

如:

  1. PHP //MD5 是私有的
  2. Ruby //MD5 已给出
  3. Python //再次 MD5

为什么会这样?

4

2 回答 2

2

如果某些下载镜像将被黑客入侵以在二进制文件中注入代码,则二进制文件的 md5 将被更改。因此,通过检查下载文件的 md5,您可以确保您的文件没有被修改。

于 2013-08-13T10:17:12.003 回答
1

md5 不是严格意义上的加密。这是一种消息摘要(“散列”)算法。这是不可逆的。将此视为文件的指纹。其他算法可用:SHA-1、SHA-256 等几个流行的选项。

显然,所有散列算法都容易发生冲突(散列值的数量是有限的,但输入文档的数量是无限的)。“错误地”发生冲突的可能性很小,但大约在 10 年前就已经证明,可以伪造与原始文件具有相同 md5 哈希值的假文件。事实上,对于 md5,这更糟糕,因为我可以选择“假”文档的前缀,并在其末尾添加一些“魔法垃圾”,以生成一个“假”存档,其中包含与原始相同的 md5 哈希。

到今天为止,md5 的主要用途应该是检查文档的完整性以防止下载错误。仅此而已。

不应该用于防止恶意回火。

于 2013-08-13T10:40:36.257 回答