

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

# 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. 创建指定用于保护您数据的包装密钥的[密钥环](choose-keyring.md)（或[主密钥提供程序](concepts.md#master-key-provider)）。

1. 将密钥环和明文数据传递给加密方法。建议您传入一个可选的非机密[加密上下文](concepts.md#encryption-context)。

1. 加密方法要求密钥环提供加密材料。密钥环返回消息的唯一数据加密密钥：一个纯文本数据密钥和一个由每个指定的包装密钥加密的数据密钥的副本。

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) 部分的示例主题。

解密加密消息的[密钥环](choose-keyring.md)（或[主密钥提供程序](concepts.md#master-key-provider)）必须与用于加密消息的密钥环兼容。其中一个包装密钥必须能够解密加密消息中的加密数据密钥。有关与密钥环和主密钥提供程序的兼容性的信息，请参阅 [密钥环兼容性](choose-keyring.md#keyring-compatibility)。

1. 使用可解密数据的包装密钥创建密钥环或主密钥提供程序。您可以使用与加密方法相同的密钥环或其他密钥环。

1. 将[加密消息](concepts.md#message)和密钥环传递给解密方法。

1. 解密方法要求密钥环或主密钥提供程序解密加密消息中的一个加密数据密钥。它传入加密的消息中的信息，包括加密的数据密钥。

1. 密钥环使用其包装密钥以解密一个加密的数据密钥。如果成功，响应则包含明文数据密钥。如果密钥环或主密钥提供程序指定的包装密钥均无法解密加密数据密钥，则解密调用失败。

1. 解密方法使用明文数据密钥解密数据，丢弃明文数据密钥，然后返回明文数据。