1

这是我的问题:我想知道客户端是否成功下载了blob,那么有什么方法可以获取blob的校验和吗?或者如果它们相同,是否有一些更好的解决方案来比较 blob 和下载的文件?

4

1 回答 1

2

在几乎所有情况下,TCP/IP 的内置校验和将保护您的数据在传输过程中免受网络损坏。此外,音频文件(和其他媒体文件,如图像)对一些翻转位具有容错性。(这并不是说腐败不会引起注意,但它的影响是微乎其微的。)

如果您有理由担心来自恶意方的故意破坏(您可能没有),那么提供校验和可能是值得的。然而,让用户检查它们仍然需要一些手动输入,即使你让它尽可能简单。

这篇文章提供了一个使用 JS 计算文件的 MD5 哈希的示例。MD5 有许多已知的弱点,所以如果你想避免恶意破坏,你可能想要使用更强大的东西(至少 SHA1)。这是另一个使用 SHA1 的示例

这些解决方案的最大缺点是,由于浏览器安全模型,用户需要手动选择文件,以便您的代码可以计算校验和。

您还需要验证您的 JS(用户正在执行以计算校验和)没有被修改,并且您在您的网站上比较的校验和在与它进行比较之前没有被修改本地校验和。使用 SSL 可以帮助解决这些问题。对于精明的用户,您可以在您的网站上发布校验和,并让他们使用自己的工具进行验证。

所以,总结一下:

  • 您可能不需要对 MP3 执行校验和验证。
  • 您可以使用基于 JS 的解决方案,但它们对用户不是特别友好。
  • 大多数关心校验和的用户自己可能知道如何计算它们,因此发布校验和是一个不错的折衷方案。
  • 最后,在您的网站上使用 SSL!
于 2012-08-07T19:10:23.877 回答