【问题标题】:How to generate MD5 hash for a file located in a Http Url?如何为位于 Http Url 中的文件生成 MD5 哈希?
【发布时间】:2011-07-11 14:12:05
【问题描述】:

我正在编写一个网络爬虫来搜索文件和下载。我的问题是我不想下载已经下载到本地驱动器的相同文件。我知道可以使用 MD5 哈希进行比较,但是如何在 HTTP URL 上执行此操作而不将它们下载到本地磁盘?

如果这种方法是错误的。请建议更好的解决方案

【问题讨论】:

    标签: c# md5


    【解决方案1】:

    除非网络服务器有某种共享 MD5 的服务,否则没有。

    计算文件哈希需要文件中的每个字节。这就是为什么更改单个字节会更改哈希,以防止获取修改的文件。

    【讨论】:

      【解决方案2】:

      要生成哈希,您需要数据(即,您需要以某种方式下载它)。

      我建议您改为使用If-Modified-Since HTTP 标头进行调查(或者可能是ETag/If-None-Match,如果特定服务器提供它)。

      【讨论】:

        【解决方案3】:

        您可以对远程文件执行的唯一比较是大小比较。不幸的是,这可能不足以确定内容是否相同。

        【讨论】:

          【解决方案4】:

          老问题,但 PowerShell 5+ 可以帮助获取远程 Url 文件的 MD5,方法是自动将其下载为字节流,然后一步计算 MD5:

          $wc = [System.Net.WebClient]::new()
          $pkgurl = 'http://www.remoteurl/file.zip'
          $FileHash = Get-FileHash -Algorithm MD5 -InputStream ($wc.OpenRead($pkgurl)) 
          write-host $FileHash.Hash 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-11-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-27
            相关资源
            最近更新 更多