这是我的问题:我想知道客户端是否成功下载了blob,所以 有没有办法得到blob的校验和?或者可能有更好的解决方案来比较blob和下载的文件,如果它们是相同的?
答案 0 :(得分:2)
在几乎所有情况下,TCP / IP的内置校验和将保护您的数据在传输过程中免受网络损坏。此外,音频文件(以及其他媒体文件,如图像)对几个翻转位具有容错能力。 (这并不是说腐败不会引人注意,但它的影响会很小。)
如果您有理由担心来自恶意方的故意损坏(您可能不这样做),则可能值得提供校验和。但是,让用户检查它们仍然需要一些手动输入,即使你尽可能简单。
这个post提供了使用JS计算文件的MD5哈希的示例。 MD5有许多已知的弱点,因此如果您试图避免恶意破坏,您可能希望使用更强大的东西(至少SHA1)。这是another example using SHA1。
这些解决方案的最大缺点是,由于浏览器安全模型,用户需要手动选择文件,以便您的代码可以计算校验和。
您还需要验证您的JS(用户正在执行以计算校验和)尚未被修改,和您在网站上比较的校验和没有在与本地校验和进行比较之前,我们已经进行了修改。使用SSL可以帮助解决这些问题。对于精明的用户,您只需在您的网站上发布校验和,然后让他们使用自己的工具进行验证。
所以,总结一下: