

# 使用客户端加密保护数据
<a name="UsingClientSideEncryption"></a>

*客户端加密*是在本地加密数据，以帮助确保数据在传输中和静态时的安全性的行为。要在将对象发送到 Amazon S3 之前对其进行加密，请使用 Amazon S3 加密客户端。当您的对象以这种方式加密时，您的对象不会泄露给任何第三方，包括 AWS。Amazon S3 接收已经加密的对象；Amazon S3 在加密或解密对象方面不起作用。您可以使用 Amazon S3 加密客户端和[服务器端加密](serv-side-encryption.md)来加密您的数据。当您向 Amazon S3 发送加密对象时，Amazon S3 无法将这些对象识别为已加密，它只会检测典型的对象。

Amazon S3 加密客户端充当您与 Amazon S3 之间的中介。在您实例化 Amazon S3 加密客户端后，您的对象将作为 Amazon S3 `PutObject` 和 `GetObject` 请求的一部分自动加密和解密。您的对象全部使用唯一的数据密钥加密。即使您将 KMS 密钥指定为包装密钥，Amazon S3 加密客户端也不会使用存储桶密钥或与存储桶密钥交互。

《Amazon S3 Encryption Client Developer Guide》**侧重于 3.0 及更高版本的 Amazon S3 加密客户端。有关更多信息，请参阅《Amazon S3 加密客户端开发人员指南》**中的[什么是 Amazon S3 加密客户端？](https://docs.aws.amazon.com//amazon-s3-encryption-client/latest/developerguide/what-is-s3-encryption-client.html)

有关早期版本的 Amazon S3 加密客户端的更多信息，请参阅适用于您的编程语言的《AWS SDK Developer Guide》。
+ [适用于 Java 的 AWS SDK](https://docs.aws.amazon.com//sdk-for-java/v1/developer-guide/examples-crypto.html)
+ [适用于 .NET 的 AWS SDK](https://docs.aws.amazon.com//sdk-for-net/v3/developer-guide/kms-keys-s3-encryption.html)
+ [适用于 Go 的 AWS SDK](https://docs.aws.amazon.com//sdk-for-go/v1/developer-guide/welcome.html)
+ [适用于 PHP 的 AWS SDK](https://docs.aws.amazon.com//sdk-for-php/v3/developer-guide/s3-encryption-client.html)
+ [适用于 Ruby 的 AWS SDK](https://docs.aws.amazon.com//sdk-for-ruby/v3/api/Aws/S3/Encryption.html)
+ [适用于 C\$1\$1 的 AWS SDK](https://docs.aws.amazon.com//sdk-for-cpp/v1/developer-guide/welcome.html)