

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 JAVA 的 AWS Encryption SDK
<a name="java"></a>

本主題說明如何安裝及使用 適用於 JAVA 的 AWS Encryption SDK。如需使用 進行程式設計的詳細資訊 適用於 JAVA 的 AWS Encryption SDK，請參閱 GitHub 上的 [aws-encryption-sdk-java](https://github.com/aws/aws-encryption-sdk-java/) 儲存庫。如需 API 文件，請參閱 的 [Javadoc](https://aws.github.io/aws-encryption-sdk-java/) 適用於 JAVA 的 AWS Encryption SDK。

**Topics**
+ [先決條件](#java-prerequisites)
+ [安裝](#java-installation)
+ [範例](java-example-code.md)

## 先決條件
<a name="java-prerequisites"></a>

安裝 之前 適用於 JAVA 的 AWS Encryption SDK，請確定您有下列先決條件。

**Java 開發環境**  
您會需要 Java 8 或更新版本。在 Oracle 網站上，移至 [Java SE 下載](https://www.oracle.com/java/technologies/downloads/)，然後下載並安裝 Java SE 開發套件 (JDK)。  
如果您使用 Oracle JDK，您還必須下載並安裝 [Java Cryptography Extension (JCE) Unlimited Strength 管轄權政策檔案](http://www.oracle.com/java/technologies/javase-jce8-downloads.html)。

**Bouncy Castle**  
 適用於 JAVA 的 AWS Encryption SDK 需要 [Bouncy Castle](https://www.bouncycastle.org/download/bouncy-castle-java/)。  
+ 適用於 JAVA 的 AWS Encryption SDK 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/)，尤其是**使用者指南**和**安全性原則** PDF。
+ 舊版 適用於 JAVA 的 AWS Encryption SDK 使用 Bouncy Castle 的 Java 專用密碼編譯 API。只有非 FIPS Bouncy Castle 才能滿足此要求。
如果您沒有 Bouncy Castle，請前往[下載 Bouncy Castle for Java](https://bouncycastle.org/download/bouncy-castle-java/) 下載對應至 JDK 的提供者檔案。您也可以使用 [Apache Maven](https://maven.apache.org/) 來取得標準 Bouncy Castle 提供者 ([bcprov-ext-jdk15on](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* 版 適用於 JAVA 的 AWS Encryption SDK 需要 AWS SDK for Java 2.x，即使您不使用 AWS KMS keyring。  
2.*x* 版或更早版本的 適用於 JAVA 的 AWS Encryption SDK 不需要 適用於 Java 的 AWS SDK。不過， 適用於 Java 的 AWS SDK 必須使用 [AWS Key Management Service](https://aws.amazon.com/kms/)(AWS KMS) 做為主金鑰提供者。從 2.4.0 適用於 JAVA 的 AWS Encryption SDK 版開始， 適用於 JAVA 的 AWS Encryption SDK 支援 1.x 版和 2.x 版的 適用於 Java 的 AWS SDK 1.x 和 2.x 版的 適用於 Java 的 AWS SDK AWS Encryption SDK 1.x 和 2.x 版可互通。例如，您可以使用支援 適用於 Java 的 AWS SDK 1.x 的 AWS Encryption SDK 程式碼來加密資料，並使用支援 的程式碼來解密資料 AWS SDK for Java 2.x （反之亦然）。2.4.0 適用於 JAVA 的 AWS Encryption SDK 之前的 版本僅支援 適用於 Java 的 AWS SDK 1.x。如需更新 版本的詳細資訊 AWS Encryption SDK，請參閱 [遷移您的 AWS Encryption SDK](migration.md)。  
將 適用於 JAVA 的 AWS Encryption SDK 程式碼從 適用於 Java 的 AWS SDK 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)的參考取代為 中的[`KmsClient`介面](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kms/package-summary.html)參考 AWS SDK for Java 2.x。 適用於 JAVA 的 AWS Encryption SDK 不支援 [`KmsAsyncClient`界面](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kms/KmsAsyncClient.html)。此外，更新您的程式碼以使用 `kmssdkv2` 命名空間中的 AWS KMS相關物件，而非 `kms` 命名空間。  
若要安裝 適用於 Java 的 AWS SDK，請使用 Apache Maven。  
+ 若要[匯入整個 適用於 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`。
+ 若要僅為 in 適用於 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>

安裝最新版本的 適用於 JAVA 的 AWS Encryption SDK。

**注意**  
所有 適用於 JAVA 的 AWS Encryption SDK 早於 2.0.0 的 版本都處於[end-of-support階段](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html#version-life-cycle)。  
您可以從 2.0.*x* 版和更新版本安全地更新至最新版本的 ， 適用於 JAVA 的 AWS Encryption SDK 而不需要變更任何程式碼或資料。不過，2.0.*x* 版中引入[的新安全功能](about-versions.md#version-2)與回溯不相容。若要從 1.7.*x* 之前的版本更新至 2.0.*x* 及更新版本，您必須先更新至最新的 1 AWS Encryption SDK.*x* 版本。如需詳細資訊，請參閱[遷移您的 AWS Encryption SDK](migration.md)。

您可以透過 適用於 JAVA 的 AWS Encryption SDK 下列方式安裝 。

**手動**  
若要安裝 適用於 JAVA 的 AWS Encryption SDK，請複製或下載 [aws-encryption-sdk-java](https://github.com/aws/aws-encryption-sdk-java/) GitHub 儲存庫。

**使用 Apache Maven**  
可透過具有下列相依性定義的 [Apache Maven](https://maven.apache.org/) 適用於 JAVA 的 AWS Encryption SDK 使用。  

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

安裝軟體開發套件之後，請先查看本指南中的[範例 Java 程式碼](java-example-code.md)和 [GitHub 上的 Javadoc](https://aws.github.io/aws-encryption-sdk-java/)。