【问题标题】:MD5 checksum file uploads on the client side客户端上传MD5校验和文件
【发布时间】:2011-07-16 22:45:51
【问题描述】:

我正在编写一个将文件存储在 Amazon S3 云上的 Web 应用程序。应用程序需要能够显示上传到它的文件在任何时候都没有被更改。文件将上传到缓存它们的 Web 应用程序服务器,然后上传到 Amazon S3 云。

在过程中的每个点(在客户端选择上传的文件、存储在缓存服务器上的文件、存储在云中的文件)我想获取并比较 md5 校验和以显示文件没有被任何更改方式。该应用程序是法律部门较大项目的一部分,因此需要文件的可靠性和验证。

比较存储在缓存服务器上的文件和存储在 Amazon S3 中的文件的校验和很容易,但我正在寻找一个文件上传器,它将在客户端计算校验和并将其与文件上传一起报告。文件大小可能不超过 20MB,因此客户端计算机上的校验和不会太难。

有什么想法吗?出于兼容性目的,我更喜欢 flash 或 java 实现,尽管我知道 html5 将允许客户端文件访问,并且这已在最新的 firefox 中采用。

非常感谢任何想法!

谢谢

罗斯

【问题讨论】:

  • 而且,鉴于一切都是通过 https 进行的,您认为是否有必要在客户端检查 MD5 哈希?

标签: php file-upload amazon-s3 md5 checksum


【解决方案1】:

MD5 文件哈希仅用于确定无意的文件更改。也就是说,如果您担心有人可能会故意更改文件,那么 MD5 哈希无法保证,因为该算法已被破解。您应该考虑使用其中一种 SHA 哈希功能。

此外,我无法确定您是否要求可以上传到您的服务器的应用程序或将上传到亚马逊的应用程序。显然,这些客户端会非常不同,因为 S3 系统已经有一个用于上传文件的 API,而您的服务器没有。

【讨论】:

  • 算法尚未破解。刚刚证明存在可能的碰撞。这并不意味着很容易产生碰撞。 - 然而,我仍然同意 SHA 甚至更好的 PGP 更适合法律领域的任何事情。
  • 大家好 - 感谢您的留言。我也看到可以制作具有相同 md5 哈希的文档。我使用它的唯一原因仅仅是因为这是 Amazon S3 对文件的报告。我们的缓存服务器将位于客户端和 S3 之间。客户端将文件上传到缓存服务器,随后缓存服务器将文件上传到 S3。
  • @Halfdan - 您的回复让我觉得您不太了解散列算法的工作原理。鸽子洞原理规定所有散列算法都会有冲突。一旦存在可以预测散列算法中的冲突的算法,它就被认为是损坏的。自从证明 MD5 SSL 证书可以被伪造以来,MD5 已经被认为被破坏了大约 3 年。见:en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
  • @Ross - 他们可能故意使用 MD5 哈希,这样您就不会完全按照您的意愿去做。 MD5 哈希仅适用于确定文件是否因传输或其他问题而意外损坏。依靠它来建立某种伪安全机制充其量是愚蠢的,最坏的情况是不负责任的。想办法。
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2012-05-18
相关资源
最近更新 更多