

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

# `GenerateDataKeyWithoutPlaintext`与 AWS SDK 或 CLI 配合使用
<a name="example_kms_GenerateDataKeyWithoutPlaintext_section"></a>

以下代码示例演示如何使用 `GenerateDataKeyWithoutPlaintext`。

------
#### [ CLI ]

**AWS CLI**  
**生成不带明文密钥的 256 位对称数据密钥**  
以下 `generate-data-key-without-plaintext` 示例请求 256 位对称数据密钥的加密副本以供在 AWS外部使用。准备好使用数据密钥时，可以调用 AWS KMS 对其进行解密。  
要请求 256 位数据密钥，请使用值为 `AES_256` 的 `key-spec` 参数。要请求 128 位数据密钥，请使用值为 `AES_128` 的 `key-spec` 参数。对于所有其他数据密钥长度，请使用 `number-of-bytes` 参数。  
您指定的 KMS 密钥必须是对称加密 KMS 密钥，即 KeySpec 值为 SYMMETRIC\$1DEFAULT 的 KMS 密钥。  

```
aws kms generate-data-key-without-plaintext \
    --key-id "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \
    --key-spec AES_256
```
输出：  

```
{
    "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogL",
    "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
}
```
`CiphertextBlob`（加密数据密钥）以 base64 编码的格式返回。  
有关更多信息，请参阅《AWS 密钥管理服务开发人员指南》**中的[数据密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)。  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[GenerateDataKeyWithoutPlaintext](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-data-key-without-plaintext.html)*中的。

------
#### [ Rust ]

**适用于 Rust 的 SDK**  
 还有更多相关信息 GitHub。在 [AWS 代码示例存储库](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/kms#code-examples)中查找完整示例，了解如何进行设置和运行。

```
async fn make_key(client: &Client, key: &str) -> Result<(), Error> {
    let resp = client
        .generate_data_key_without_plaintext()
        .key_id(key)
        .key_spec(DataKeySpec::Aes256)
        .send()
        .await?;

    // Did we get an encrypted blob?
    let blob = resp.ciphertext_blob.expect("Could not get encrypted text");
    let bytes = blob.as_ref();

    let s = base64::encode(bytes);

    println!();
    println!("Data key:");
    println!("{}", s);

    Ok(())
}
```
+  有关 API 的详细信息，请参阅适用[GenerateDataKeyWithoutPlaintext](https://docs.rs/aws-sdk-kms/latest/aws_sdk_kms/client/struct.Client.html#method.generate_data_key_without_plaintext)于 *Rust 的AWS SDK API 参考*。

------

有关 S AWS DK 开发者指南和代码示例的完整列表，请参阅[将此服务与 AWS SDK 配合使用](sdk-general-information-section.md)。本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。