我正在开发一个应用程序,除其他外,它可以从网络下载图像。我的一些测试人员发现图像无法下载。在某些情况下,下载会在中间失败。最终显示的图像是这样的:
预期的图像如下所示:
该应用程序使用 API 中的 URL。我想使用 SHA1 校验和来验证图像是否已下载,如下所示:
- 该应用程序请求图像信息,包括 URL 和校验和。
- 该应用程序尝试下载图像。
- 应用程序散列并将下载的图像与来自服务器的散列进行比较。
我有这个权利吗?这种散列有助于检测中途失败的下载吗?
我正在开发一个应用程序,除其他外,它可以从网络下载图像。我的一些测试人员发现图像无法下载。在某些情况下,下载会在中间失败。最终显示的图像是这样的:
预期的图像如下所示:
该应用程序使用 API 中的 URL。我想使用 SHA1 校验和来验证图像是否已下载,如下所示:
我有这个权利吗?这种散列有助于检测中途失败的下载吗?
你提出的逻辑是正确的。一般来说,当需要考虑安全性时,会使用 SHA1。您可以使用更简单的方法来检查数据是否有效。实际下载的文件大小等。但是,你提出的逻辑是对从服务器接收到的数据的有效性进行更彻底的检查,如果SHA1和check out,你已经准确地保证了用户已经收到了数据你发送的。
我相信 HTTP 和 FTP 传输协议都可以为您保证这一点。通过保证,这意味着如果部分文件已下载,您将收到通知,或者如果文件被完整且准确地接收,则返回成功。因此,除非安全是一个问题,否则 SHA1 检查是多余的。如果有必要,您还需要在公钥/私钥类型的方案中加密此哈希。