这是使用校验和的正确方法吗?

时间:2013-05-01 16:26:20

标签: ios hash checksum nsurlrequest data-integrity

我正在开发一款应用程序,其中包括从网上下载图像。我的一些测试人员发现图像无法下载。在某些情况下,中间下载失败。最终显示的图像是这样的:

enter image description here

预期图像如下所示:

enter image description here

该应用程序使用API​​中的URL。我想使用SHA1校验和来验证图像是否已下载,如下所示:

  1. 应用程序请求图像信息,包括URL和校验和。
  2. 该应用尝试下载图片。
  3. 应用程序哈希并将下载的图像与服务器的哈希值进行比较。
  4. 我有这个权利吗?这种散列有助于检测中途失败的下载吗?

1 个答案:

答案 0 :(得分:0)

你提出的逻辑是正确的。通常,在担心安全性时将使用SHA1。您可以使用更简单的方法来检查数据是否有效。实际下载的文件大小等。但是,您提供的逻辑是对从服务器接收的数据的有效性进行更彻底的检查,如果SHA1总和检出,则您已准确地保证用户已收到数据你寄来的。

我相信HTTP和FTP传输协议都能为您提供保证。保证,这意味着如果已经下载了部分文件,您将收到通知,或者如果文件被完全准确地接收,则返回成功。因此,除非安全性是一个问题,否则SHA1检查是过度的。如果有必要,您还需要在公钥/私钥类型的方案中加密此哈希。