我今天看了“密码学哈希函数”的维基页面。我了解到,md5已经在文件验证中得到应用。
有一件事我想不通,就是这样。
假设我想从一个网站上下载一个文件(.exe、.iso等等)。1.服务器会先把文件的md5代码传给我吗?如果是这样,我如何存储md5代码?是否将代码存储在文件中?
2.下载完成后,如何启动验证流程?我是应该手动进行验证,还是应该由下载器(可能是chrome explorer下载工具)自动进行验证?
3.如果我正在下载的文件被互联网上的黑客拦截了,那么黑客会知道这个文件是什么吗?以及如何防止拦截?
谢谢。
发布于 2011-09-02 20:43:00
根据之前的回答,在下载网站上发布MD5的目的与黑客(中间人攻击)无关。只是为了确保你下载的正确。如果某些位由于某种原因而损坏,则软件可能无法运行。设置安全性远比设置一个小散列复杂得多,但幸运的是,您的浏览器知道如何处理这一点:每当您通过TLS (SSL,https)连接时,它都会建立一个安全连接。仅仅通过观察发送了多少数据,即使攻击者看不到数据是什么,他也可能能够猜测您正在下载的文件。
编辑:什么是MD5?它只是对文件的所有部分进行了少量计算的值。你发送文件,并使用md5程序自己进行计算,然后检查您获得的值是否与网站上列出的值相同。计算很巧妙,如果文件的一个或多个位被损坏,则计算出的MD5值将发生变化,因此您知道下载不起作用,需要重新下载。
发布于 2011-09-02 18:43:04
文件和文件的MD5散列分别传输。您需要自己计算文件的MD5哈希值,并将其与下载的版本进行比较。如果它们匹配,则文件是相同的。可以将MD5看作是校验和的一个更精细的版本。
如果你想阻止拦截,那么你需要加密文件,这是一个单独的问题。如果你想确保文件是真正的原始文件,并且你没有被错误的副本所欺骗,使用虚假的MD5散列,那么看看HMAC。
发布于 2011-09-02 20:30:44
可能有一些浏览器插件可以让你自动进行哈希验证。我以前没有做过任何研究。
网站通常会在下载链接旁边提供十六进制格式的散列。
一旦你下载了文件,你就把它‘馈送’给一个工具,这个工具将计算文件的哈希值。几乎所有的编程语言都有能力做到这一点,而且有许多可搜索的工具可以做到这一点。
如果您自己生成的散列与网站上显示的散列匹配,则表明该文件未损坏/是正确的文件。
MD5是用于进行散列验证的最常见的散列函数。不建议再出于安全目的而使用,但验证文件的内容是正确的(在“随意”的情况下)是完全可以的。
数字签名还用于确保文件是正确的,并且是由已知的人/机构/站点生成的。
https://stackoverflow.com/questions/7282242
复制相似问题