

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

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

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

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

**AWS CLI**  
**示例 1：生成 256 位随机字节字符串（Linux 或 macOS）**  
以下 `generate-random` 示例生成 256 位（32 字节）、以 base64 编码的随机字节字符串。该示例对字节字符串进行解码并将其保存在随机文件中。  
运行此命令时，您必须使用 `number-of-bytes` 参数指定随机值的长度（以字节为单位）。  
在运行此命令时，无需指定 KMS 密钥。随机字节字符串与任何 KMS 密钥无关。  
默认情况下， AWS KMS 会生成随机数。但是，如果您指定[自定义密钥存储库](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html)，则随机字节字符串将在与该自定义密钥库关联的 AWS CloudHSM 集群中生成。  
本示例使用以下参数和值：  
它使用值为的必需`--number-of-bytes`参数`32`来请求一个 32 字节（256 位）的字符串。它使用值为的`--output`参数指示 CL AWS I 将输出作为文本返回，而不是 JSON。它使用从响应中提取`Plaintext`属性的值。它使用重定`--query parameter`向运算符 (>) 从响应中提取的字符串中提取出来。它使用重定向运算符 (>) 来保存解码后的字节字符串到文件。它使用重定向运算符 (>) `text` `base64` `ExampleRandom`将二进制密文保存到文件中。  

```
aws kms generate-random \
    --number-of-bytes 32 \
    --output text \
    --query Plaintext | base64 --decode > ExampleRandom
```
此命令不生成任何输出。  
有关更多信息，请参阅《*AWS 密钥管理服务 API 参考*》[GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)中的。  
**示例 2：生成 256 位随机数（Windows 命令提示符）**  
以下示例使用 `generate-random` 命令生成 256 位（32 字节）、以 base64 编码的随机字节字符串。该示例对字节字符串进行解码并将其保存在随机文件中。此示例与前面的示例相同，不同之处在于：它在将随机字节字符串保存到文件之前，使用 Windows 中的 `certutil` 实用工具对随机字节字符串进行 base64 解码。  
首先，生成一个 base64 编码的随机字节字符串并将其保存在临时文件 `ExampleRandom.base64` 中。  

```
aws kms generate-random \
    --number-of-bytes 32 \
    --output text \
    --query Plaintext > ExampleRandom.base64
```
由于 `generate-random` 命令的输出保存在文件中，因此，此示例不生成任何输出。  
现在，使用 `certutil -decode` 命令解码 `ExampleRandom.base64` 文件中以 base64 编码的字节字符串。然后，它将解码后的字节字符串保存在 `ExampleRandom` 文件中。  

```
certutil -decode ExampleRandom.base64 ExampleRandom
```
输出：  

```
Input Length = 18
Output Length = 12
CertUtil: -decode command completed successfully.
```
有关更多信息，请参阅《*AWS 密钥管理服务 API 参考*》[GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)中的。  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[GenerateRandom](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-random.html)*中的。

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

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

```
async fn make_string(client: &Client, length: i32) -> Result<(), Error> {
    let resp = client
        .generate_random()
        .number_of_bytes(length)
        .send()
        .await?;

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

    let s = base64::encode(bytes);

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

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

------

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