

# 在 Amazon S3 中检查对象完整性
<a name="checking-object-integrity"></a>

Amazon S3 在对象的存储生命周期中提供了一系列数据保护功能。通过 Amazon S3，可以使用校验和值来验证您上传或下载的数据的完整性。此外，可以请求为存储在 S3 中的任何对象计算另一个校验和值。

上传、复制或管理数据时，可以从几种支持的校验和算法中进行选择：
+ CRC-64/NVME (`CRC64NVME`)
**注意**  
`CRC64NVME` 校验和算法是用于校验和计算的默认校验和算法。
+ CRC-32 (`CRC32`)
+ CRC-32C (`CRC32C`)
+ SHA-1 (`SHA1`)
+ SHA-256 (`SHA256`)
+ MD5 (`MD5`)
+ XXHash64 (`XXHASH64`)
+ XXHash3 (`XXHASH3`)
+ XXHash128 (`XXHASH128`)
+ SHA-512 (`SHA512`)

**注意**  
您可以使用 `x-amz-checksum-md5` 标头提供预先计算的 MD5 校验和。AWSSDK 不会自动计算 MD5 校验和。对于分段上传，S3 批量操作中的计算校验和操作可以计算静态对象的完整对象 MD5 校验和。旧版 `Content-MD5` 标头仍保持可用于使用 SSE-S3 加密的单分段上传。

当将对象上传到 S3 时，可以指定使用这些校验和算法中的任何一种。对于上传，AWS 拥有的所有客户端都会计算对象的校验和，然后将其与上传请求一起发送。然后，S3 在服务器端独立计算对象的校验和值，并使用提供的值对其进行验证，然后再存储对象和校验和值。当您执行单分段上传或分段上传时（对分段上传使用完整对象校验和类型），还可以为这些校验和算法提供预先计算的值。要将预先计算的值用于多个对象，请使用 AWS CLI 或 AWS SDK。

或者，如果您想在无需还原或下载数据的情况下验证 S3 中的数据集，则可以将**计算校验和**操作与 S3 批量操作结合使用。**计算校验和**操作支持您在一个任务请求中高效地验证数十亿个对象。执行**计算校验和**操作时，S3 会为一组静态对象计算校验和值。在任务请求结束时，您将收到一份自动生成的完整性报告（也称为完成报告），您可以使用该报告来确认数据集是否完好无损。

**Topics**
+ [在 Amazon S3 中检查数据上传的对象完整性](checking-object-integrity-upload.md)
+ [在 Amazon S3 中检查静态数据的对象完整性](checking-object-integrity-at-rest.md)