

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

# AWS Encryption SDK for Java
<a name="java"></a>

本主题介绍了如何安装和使用 AWS Encryption SDK for Java。有关使用编程的详细信息 AWS Encryption SDK for Java，请参阅上的[aws-encryption-sdk-java](https://github.com/aws/aws-encryption-sdk-java/)存储库 GitHub。有关 API 文档，请参阅适用于 AWS Encryption SDK for Java的 [Javadoc](https://aws.github.io/aws-encryption-sdk-java/)。

**Topics**
+ [先决条件](#java-prerequisites)
+ [安装](#java-installation)
+ [示例](java-example-code.md)

## 先决条件
<a name="java-prerequisites"></a>

在安装之前 AWS Encryption SDK for Java，请确保满足以下先决条件。

**Java 开发环境**  
您需要使用 Java 8 或更高版本。在 Oracle 网站上，转到 [Java SE 下载](https://www.oracle.com/java/technologies/downloads/)，然后下载并安装 Java SE Development Kit (JDK)。  
如果使用 Oracle JDK，您还必须下载并安装 [Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files](http://www.oracle.com/java/technologies/javase-jce8-downloads.html)。

**Bouncy Castle**  
 AWS Encryption SDK for Java 需要[充气城堡](https://www.bouncycastle.org/download/bouncy-castle-java/)。  
+ AWS Encryption SDK for Java 1.6.1 及更高版本使用 Bouncy Castle 对加密对象进行序列化和反序列化。您可以使用 Bouncy Castle 或 [Bouncy Castle FIPS](https://www.bouncycastle.org/about/bouncy-castle-fips-faq/) 以满足该要求。**有关安装和配置 Bouncy Castle FIPS 的帮助，请参阅 [BC FIPS 文档](https://www.bouncycastle.org/documentation/)，尤其是**用户指南和安全**政策。** PDFs
+ 早期版本 AWS Encryption SDK for Java 使用 Bouncy Castle 的 Java 加密 API。仅非 FIPS Bouncy Castle 满足该要求。
如果你没有 Bouncy Castle，请前往[下载 Java 版 Bouncy Castle](https://bouncycastle.org/download/bouncy-castle-java/) 下载与你的 JDK 对应的提供程序文件。[你也可以使用 [Apache Mav](https://maven.apache.org/) en 获取标准 Bouncy Castle 提供者（[bcprov-ext-jdk15 on](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-ext-jdk15on)）的神器或 Bouncy Castle FIPS 的神器（bc-fips）。](https://mvnrepository.com/artifact/org.bouncycastle/bc-fips)

**适用于 Java 的 AWS SDK**  
版本 3。 *其中 x* AWS Encryption SDK for Java 需要 AWS SDK for Java 2.x，即使你不使用 AWS KMS 钥匙圈。  
版本 2。 *x* 或更早版本 AWS Encryption SDK for Java 不需要 适用于 Java 的 AWS SDK。但是 适用于 Java 的 AWS SDK ，必须使用 [AWS Key Management Service](https://aws.amazon.com/kms/)(AWS KMS) 作为主密钥提供程序。从 2.4.0 AWS Encryption SDK for Java 版本开始，同时 AWS Encryption SDK for Java 支持 1.x 和 2.x 版本的。 适用于 Java 的 AWS SDK AWS Encryption SDK 适用于 Java 的 AWS SDK 1.x 和 2.x 的代码是可互操作的。例如，您可以使用支持 适用于 Java 的 AWS SDK 1.x 的 AWS Encryption SDK 代码加密数据，然后使用支持的代码对其进行解密 AWS SDK for Java 2.x （反之亦然）。2.4.0 AWS Encryption SDK for Java 之前的版本仅支持 适用于 Java 的 AWS SDK 1.x。有关更新版本的信息 AWS Encryption SDK，请参阅[迁移你的 AWS Encryption SDK](migration.md)。  
将 AWS Encryption SDK for Java 代码从 1.x 更新到时 AWS SDK for Java 2.x，请将 适用于 Java 的 AWS SDK 1.x 中对[`AWSKMS`接口](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kms/package-summary.html)的引用替换为中 适用于 Java 的 AWS SDK 对[`KmsClient`接口](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kms/package-summary.html)的引用。 AWS SDK for Java 2.x AWS Encryption SDK for Java 不支持该[`KmsAsyncClient`接口](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kms/KmsAsyncClient.html)。此外，更新代码即可使用 `kmssdkv2` 命名空间中的 AWS KMS相关对象，而不是 `kms` 命名空间。  
要安装，请使用 Apache Maven。 适用于 Java 的 AWS SDK  
+ 要[导入整个 适用于 Java 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-project-maven.html#build-the-entire-sdk-into-your-project)以作为依赖项，请在 `pom.xml` 文件中对其进行声明。
+ 要在 适用于 Java 的 AWS SDK 1.x 中仅为 AWS KMS 模块创建依赖关系，请按照[指定特定模块](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-maven.html#modules-dependencies)的说明进行操作，并将设置为。`artifactId` `aws-java-sdk-kms`
+ 要在 适用于 Java 的 AWS SDK 2.x 中仅为 AWS KMS 模块创建依赖关系，请按照[指定特定模块](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-project-maven.html#modules-dependencies)的说明进行操作。将 `groupId` 设置为 `software.amazon.awssdk`，并将 `artifactId` 设置为 `kms`。
有关更多更改，请参阅[《 AWS SDK for Java 2.x 开发者指南》中的 适用于 Java 的 AWS SDK 1.x 和 2.x 有什么区别](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-whats-different.html)。  
《 AWS Encryption SDK 开发人员指南》中的 Java 示例使用 AWS SDK for Java 2.x。

## 安装
<a name="java-installation"></a>

安装最新版本的 AWS Encryption SDK for Java。

**注意**  
[2.0.0 AWS Encryption SDK for Java 之前的所有版本都处于该阶段。end-of-support](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle)  
您可以安全地从 AWS Encryption SDK for Java 版本 2.0.*x* 及更高版本更新为最新版本，无需更改任何代码或数据。但是，版本 2.0.*x* 中引入了[新的安全功能](about-versions.md#version-2)，不向后兼容。要从 1.7.*x* 之前的版本更新到 2.0.*x* 及更高版本，必须先更新到 AWS Encryption SDK最新版本 1.*x*。有关更多信息，请参阅 [迁移你的 AWS Encryption SDK](migration.md)。

您可以通过以下 AWS Encryption SDK for Java 方式安装。

**手动方式**  
要安装 AWS Encryption SDK for Java，请克隆或下载[aws-encryption-sdk-java](https://github.com/aws/aws-encryption-sdk-java/) GitHub存储库。

**使用 Apache Maven**  
可通过 [Apache Maven](https://maven.apache.org/) 获得，依赖关系定义如下。 AWS Encryption SDK for Java   

```
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-encryption-sdk-java</artifactId>
  <version>3.0.0</version>
</dependency>
```

安装完软件开发工具包后，请先查看本指南中的[示例 Java 代码](java-example-code.md)，然后打开 J [avadoc](https://aws.github.io/aws-encryption-sdk-java/)。 GitHub