

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

# AWS Encryption SDK 的運作方式
<a name="how-it-works"></a>

本節中的工作流程說明 如何 AWS Encryption SDK 加密資料和解密[加密的訊息](concepts.md#message)。這些工作流程使用預設功能描述基本程序。如需定義和使用自訂元件的詳細資訊，請參閱每個支援[語言實作](programming-languages.md)的 GitHub 儲存庫。

 AWS Encryption SDK 使用信封加密來保護您的資料。每個訊息都會以唯一的資料金鑰加密。然後，資料金鑰會由您指定的包裝金鑰加密。若要解密加密的訊息， AWS Encryption SDK 會使用您指定的包裝金鑰來解密至少一個加密的資料金鑰。然後，它可以解密加密文字並傳回純文字訊息。

需要我們在 中使用的術語協助 AWS Encryption SDK嗎？ 請參閱 [中的概念 AWS Encryption SDK](concepts.md)。

## 如何 AWS Encryption SDK 加密資料
<a name="encrypt-workflow"></a>

 AWS Encryption SDK 提供加密字串、位元組陣列和位元組串流的方法。如需程式碼範例，請參閱每個[程式設計語言](programming-languages.md)區段中的範例主題。

1. 建立 [keyring](choose-keyring.md) （或[主金鑰提供者](concepts.md#master-key-provider))，指定保護資料的包裝金鑰。

1. 將 keyring 和純文字資料傳遞至 加密方法。我們建議您傳遞選用的非秘密[加密內容](concepts.md#encryption-context)。

1. 加密方法會向 keyring 詢問加密資料。keyring 會傳回訊息的唯一資料加密金鑰：一個純文字資料金鑰，以及每個指定包裝金鑰加密的資料金鑰複本。

1. 這項加密方法會使用純文字資料金鑰來加密資料，接著再捨棄該純文字資料金鑰。如果您提供加密內容 AWS Encryption SDK ([最佳實務](best-practices.md))，加密方法會以密碼編譯方式將加密內容繫結至加密的資料。

1. 如果您使用加密方法，加密方法會傳回加密[訊息](concepts.md#message)，其中包含加密的資料、加密的資料金鑰和其他中繼資料，包括加密內容。

## 如何 AWS Encryption SDK 解密加密的訊息
<a name="decrypt-workflow"></a>

 AWS Encryption SDK 提供解密[加密訊息](concepts.md#message)並傳回純文字的方法。如需程式碼範例，請參閱每個[程式設計語言](programming-languages.md)區段中的範例主題。

解密加密訊息的 [keyring](choose-keyring.md) （或[主金鑰提供者](concepts.md#master-key-provider)) 必須與用來加密訊息的 keyring （或主金鑰提供者） 相容。其中一個包裝金鑰必須能夠解密加密訊息中的加密資料金鑰。如需有關 keyring 和主金鑰提供者相容性的資訊，請參閱 [Keyring 相容性](choose-keyring.md#keyring-compatibility)。

1. 使用可解密資料的包裝金鑰來建立 keyring 或主金鑰提供者。您可以使用您提供給加密方法的相同 keyring 或其他 keyring。

1. 將[加密的訊息](concepts.md#message)和 keyring 傳遞至解密方法。

1. 解密方法會要求 keyring 或主金鑰提供者解密加密訊息中的其中一個加密資料金鑰。它會從加密的訊息傳入資訊，包括加密的資料金鑰。

1. keyring 使用其包裝金鑰來解密其中一個加密的資料金鑰。如果成功，回應會包含純文字資料金鑰。如果 keyring 或主金鑰提供者指定的包裝金鑰都無法解密加密的資料金鑰，解密呼叫會失敗。

1. 解密方法使用純文字資料金鑰來解密資料、捨棄純文字資料金鑰，並傳回純文字資料。