【问题标题】:Amazon S3 & ChecksumAmazon S3 和校验和
【发布时间】:2011-12-23 16:14:33
【问题描述】:

我尝试验证上传到存储桶的文件的完整性,但没有找到任何相关信息。

在文件的标题中,有一个“E-tag”,但我认为它不是 md5 校验和。

那么,如何检查我在 Amazon S3 上上传的文件是否与我计算机上的文件相同?

谢谢。 :)

【问题讨论】:

标签: amazon-s3 checksum


【解决方案1】:

如果您使用 REST API 在单个操作中上传对象(最多 5GB),那么您可以在 PUT 中添加 Content-MD5 标头要求。根据 PUT 的 S3 文档,Content-MD5 标头是:

根据 RFC 1864 的 base64 编码的 128 位 MD5 消息摘要(不含标头)。此标头可用作消息完整性检查,以验证数据是否为相同数据那是最初发送的。虽然它是可选的,但我们建议使用 Content-MD5 机制作为端到端的完整性检查。

查看this answer,了解如何计算 base64 编码的 128 位 MD5 摘要。如果您使用的是s3curl,则可以使用 --contentMd5 选项将计算得到的摘要包含在请求标头中。

如果亚马逊在上传完成时计算的 md5 摘要与您在 Content-MD5 标头中提供的 md5 摘要不匹配,亚马逊将使用 BadDigest 错误代码进行响应。

如果您使用分段上传,则 Content-MD5 标头可单独对每个部分进行完整性检查。分段上传完成后,亚马逊目前不提供验证组装文件完整性的方法。

【讨论】:

  • 我开发了一个 iphone 应用程序来将视频上传到亚马逊,并将文件编码为 base64 编码的 128 位 MD5,文件上传完成后,我收到“错误代码:BadDigest,消息:您的内容 MD5指定的与我们收到的不符。”这是否意味着我无法将 md5 值与我的 pohone 和 s3 服务器匹配?
  • 有关如何使用 AWS CLI s3api 命令执行此操作的示例,请参阅 stackoverflow.com/a/49471518/599390
猜你喜欢
  • 1970-01-01
  • 2010-11-24
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多