

# 在 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`)
**注意**  
对于分段上传，计算校验和操作使用 `MD5` 来提供完整对象校验和值，这在上传过程中是不可能的。对于单分段上传，`content-MD5 header` 仅在为对象使用 S3 ETag 时才可用，并且必须使用 SSE-S3 加密。

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

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

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