带 的 Amazon S3 校验和 - Amazon SDK for PHP
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

带 的 Amazon S3 校验和

Amazon Simple Storage Service (Amazon S3) 允许您在上传对象时指定校验和。当您指定校验和时,校验和与对象一起存储,并且可以在下载对象时验证该校验和。

传输文件时,校验和可提供额外的数据层完整性。使用校验和,您可以通过确认收到文件与原始文件是否匹配来验证数据一致性。有关带 Amazon S3 的校验和的更多信息,请参阅 Amazon Simple Storage Service 用户指南

Amazon S3 目前支持四种校验和算法:SHA-1、SHA-256、CRC-32 和 CRC-32C。您可以灵活地选择最适合自己需求的算法,并让 SDK 计算校验和。或者,您可以使用其中四种支持算法之一来指定他们自己预先计算的校验和值。

我们在两个请求阶段讨论校验和:上传对象和下载对象。

上传对象

该算法的有效值为 CRC32CRC32CSHA1SHA256

以下代码片段展示了上传具有 CRC-32 校验和的对象的请求。当 SDK 发送此请求时,它会计算 CRC-32 校验和并上传对象。Amazon S3 将校验和与对象一起存储。

如果 SDK 计算的校验和与 Amazon S3 在收到请求时计算的校验和不匹配,则会返回错误。

使用预先计算的校验和值

与请求一起提供的预先计算校验和值会禁用 SDK 的自动计算,而是使用提供的值。

以下示例展示了具有预先计算的 SHA-256 校验和的请求。

如果 Amazon S3 确定指定算法的校验和值不正确,服务就会返回错误响应。

分段上传

您也可以将校验和用于分段上传。

下载对象

使用 getObject 方法下载对象时,,SDK 就会自动验证校验和。

以下代码段中的请求引导 SDK 通过计算校验和并比较值来验证响应中的校验和。

如果上传对象时没有使用校验和,则不会进行验证。

Amazon S3 中的一个对象可以具有多个校验和,但在下载时只验证一个校验和。以下优先顺序(基于校验和算法的效率)决定了 SDK 要验证哪个校验和:

  1. CRC-32C

  2. CRC-32

  3. SHA-1

  4. SHA-256

例如,如果响应同时包含 CRC-32 和 SHA-256 校验和,则只验证 CRC-32 校验和。