本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GenerateRandom
搭配使用 Amazon SDK或 CLI
以下代码示例演示如何使用 GenerateRandom
。
- CLI
-
- Amazon CLI
-
示例 1:生成 256 位的随机字节字符串(Linux 或)macOs
以下
generate-random
示例生成 256 位(32 字节)、以 base64 编码的随机字节字符串。该示例对字节字符串进行解码并将其保存在随机文件中。运行此命令时,您必须使用
number-of-bytes
参数指定随机值的长度(以字节为单位)。运行此命令时无需指定KMS密钥。随机字节字符串与任何KMS密钥无关。
默认情况下, Amazon KMS生成随机数。但是,如果您指定自定义密钥存储区 < l https://docs.aws.amazon.com/kms/ atest/developerguid custom-key-store-overview e/ .html>,则随机字节字符串将生成在 Amazon 与自定义密钥库关联的云HSM集群。
本示例使用以下参数和值:
它使用值为的必需
--number-of-bytes
参数32
来请求一个 32 字节(256 位)的字符串。它使用值为的--output
参数来指示text
Amazon CLI要以文本形式返回输出,而不是JSON。它使用从响应中提取Plaintext
属性的值。它将命令的输出通过管道 (|)--query parameter
到实用程序,该base64
实用程序对提取的输出进行解码。它使用重定向运算符 (>) 将解码后的字节字符串保存到文件中。它使用重定向运算符 (>) 将二进制密文保存到ExampleRandom
文件中。aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext | base64 --decode > ExampleRandom
此命令不生成任何输出。
有关更多信息,请参阅GenerateRandom中的 Amazon 密钥管理服务API参考。
示例 2:生成 256 位随机数(Windows 命令提示符)
以下示例使用
generate-random
命令生成 256 位(32 字节)、以 base64 编码的随机字节字符串。该示例对字节字符串进行解码并将其保存在随机文件中。此示例与前面的示例相同,不同之处在于:它在将随机字节字符串保存到文件之前,使用 Windows 中的certutil
实用工具对随机字节字符串进行 base64 解码。首先,生成一个 base64 编码的随机字节字符串并将其保存在临时文件
ExampleRandom.base64
中。aws kms generate-random \ --number-of-bytes
32
\ --outputtext
\ --queryPlaintext
>
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.
有关更多信息,请参阅GenerateRandom中的 Amazon 密钥管理服务API参考。
-
有关API详细信息,请参阅GenerateRandom
中的 Amazon CLI 命令参考。
-
- Rust
-
- SDK对于 Rust
-
注意
还有更多相关信息 GitHub。在中查找完整的示例,学习如何设置和运行 Amazon 代码示例存储库
。 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
中的 Amazon SDK供API参考 Rust 。
-
有关完整列表 Amazon SDK开发者指南和代码示例,请参阅使用 Amazon KMS 用一个 Amazon SDK。本主题还包括有关入门的信息以及有关先前SDK版本的详细信息。