Usar GenerateRandom com o AWS SDK ou a CLI - AWS Key Management Service

Usar GenerateRandom com o AWS SDK ou a CLI

Os exemplos de código a seguir mostram como usar o GenerateRandom.

CLI
AWS CLI

Exemplo 1: como gerar uma string de bytes aleatória de 256 bits (Linux ou macOS)

O exemplo de generate-random a seguir gera uma string de bytes aleatórios de 256 bits (32 bytes) codificada em base64. O exemplo decodifica a string de bytes e a salva no arquivo aleatório.

Ao executar esse comando, use o parâmetro number-of-bytes para especificar o tamanho do valor aleatório em bytes.

Você não especifica uma chave do KMS ao executar esse comando. A sequência de bytes aleatória não está relacionada a nenhuma chave do KMS.

Por padrão, o AWS KMS gera o número aleatório. No entanto, se você especificar um repositório de chaves personalizado, a sequência de bytes aleatória será gerada no cluster do AWS CloudHSM associado ao repositório de chaves personalizado.

Este exemplo usa os seguintes parâmetros e valores:

Ele usa o parâmetro obrigatório --number-of-bytes com o valor de 32 para solicitar uma string de 32 bytes (256 bits). Ele usa o parâmetro --output com o valor de text para direcionar a AWS CLI a retornar a saída como texto em vez de um JSON. Ele usa --query parameter para extrair o valor da propriedade Plaintext da resposta. Ele canaliza ( | ) a saída do comando para o utilitário base64, que decodifica a saída extraída. Ele usa o operador de redirecionamento ( > ) para salvar a string de bytes decodificada no arquivo ExampleRandom. Ele usa o operador de redirecionamento ( > ) para salvar o texto cifrado binário em um arquivo.

aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext | base64 --decode > ExampleRandom

Este comando não produz saída.

Para obter mais informações, consulte GenerateRandom na Referência da API do AWS Key Management Service.

Exemplo 2: como gerar um número aleatório de 256 bits (prompt de comando do Windows)

O exemplo a seguir usa o comando generate-random para gerar uma string aleatória de 256 bits (32 bytes) codificada em base64. O exemplo decodifica a string de bytes e a salva no arquivo aleatório. Esse exemplo é igual ao exemplo anterior, mas usa o utilitário certutil no Windows para decodificar em base64 a string de bytes aleatória antes de salvá-la em um arquivo.

Primeiro, gere uma string de bytes aleatória codificada em base64 e salve-a em um arquivo temporário (ExampleRandom.base64).

aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext > ExampleRandom.base64

Como a saída do comando generate-random é salva em um arquivo, esse exemplo não produz nenhuma saída.

Use o comando certutil -decode para decodificar a string de bytes codificada em base64 no arquivo ExampleRandom.base64. Em seguida, ele salva a string de bytes decodificada no arquivo ExampleRandom.

certutil -decode ExampleRandom.base64 ExampleRandom

Resultado:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

Para obter mais informações, consulte GenerateRandom na Referência da API do AWS Key Management Service.

  • Para obter detalhes da API, consulte GenerateRandom na Referência de comandos da AWS CLI.

Rust
SDK para Rust
nota

Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWSCode Examples Repository.

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(()) }
  • Para obter detalhes da API, consulte GenerateRandom na Referência da API AWS SDK para Rust.

Para ver uma lista completa dos Guias do desenvolvedor e exemplos de código do SDK da AWS, consulte Using this service with an AWS SDK. Este tópico também inclui informações sobre como começar e detalhes sobre versões anteriores do SDK.