EncryptÚselo con una AWS SDK o CLI - AWS Key Management Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

EncryptÚselo con una AWS SDK o CLI

En los siguientes ejemplos de código se muestra cómo se utiliza Encrypt.

Los ejemplos de acciones son extractos de código de programas más grandes y deben ejecutarse en contexto. Puede ver esta acción en contexto en el siguiente ejemplo de código:

CLI
AWS CLI

Ejemplo 1: Cifrado del contenido de un archivo en Linux o MacOS

El siguiente encrypt comando muestra la forma recomendada de cifrar datos con. AWS CLI

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile

El comando hace varias cosas:

Utiliza el parámetro --plaintext para indicar los datos que se van a cifrar. El valor de este parámetro debe estar codificado en base64. El valor del plaintext parámetro debe estar codificado en base64 o debe utilizar el fileb:// prefijo, que le indica que lea los datos binarios del archivo. Si el AWS CLI archivo no está en el directorio actual, escriba la ruta completa del archivo. Por ejemplo: fileb:///var/tmp/ExamplePlaintextFile o fileb://C:\Temp\ExamplePlaintextFile. Para obtener más información sobre la lectura de los valores de los AWS CLI parámetros de un archivo, consulte Carga de parámetros desde un archivo en la AWS Guía del usuario de la interfaz de línea de AWS comandos y en el blog Prácticas recomendadas para los parámetros de archivos locales en la herramienta de línea de comandos. Utiliza --query los parámetros --output y para controlar la salida del comando. Estos parámetros extraen los datos cifrados, denominados texto cifrado, de la salida del comando. Para obtener más información sobre el control de la salida, consulte Control Resultado del comando en la guía del usuario de la interfaz de línea de AWS comandos. Utiliza la base64 utilidad para decodificar el resultado extraído en datos binarios. El texto cifrado que devuelve un encrypt comando correcto es texto codificado en base64. Debe decodificar este texto AWS CLI para poder utilizarlo para descifrarlo.Guarda el texto cifrado binario en un archivo.La parte final del comando () guarda el texto cifrado binario en un archivo para facilitar el descifrado. > ExampleEncryptedFile Para ver un comando de ejemplo que utiliza el para descifrar datos, consulte los ejemplos de descifrado. AWS CLI

Ejemplo 2: Utilización del AWS CLI para cifrar datos en Windows

Este ejemplo es igual al anterior, excepto que utiliza la herramienta certutil en lugar de base64. Como se muestra en el siguiente ejemplo, este procedimiento requiere dos comandos.

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob > C:\Temp\ExampleEncryptedFile.base64 certutil -decode C:\Temp\ExampleEncryptedFile.base64 C:\Temp\ExampleEncryptedFile

Ejemplo 3: Cifrar con una clave asimétrica KMS

El siguiente encrypt comando muestra cómo cifrar texto sin formato con una clave asimétrica. KMS El parámetro --encryption-algorithm es obligatorio. Como en todos los encrypt CLI comandos, el plaintext parámetro debe estar codificado en base64 o debe utilizarse el fileb:// prefijo, que indica que debe leer los datos binarios del archivo AWS CLI.

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile

Este comando no genera ninguna salida.

  • Para API obtener más información, consulte Cifrar en la referencia de comandos.AWS CLI

Java
SDKpara Java 2.x
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

/** * Encrypts the given text asynchronously using the specified KMS client and key ID. * * @param keyId the ID of the KMS key to use for encryption * @param text the text to encrypt * @return a CompletableFuture that completes with the encrypted data as an SdkBytes object */ public CompletableFuture<SdkBytes> encryptDataAsync(String keyId, String text) { SdkBytes myBytes = SdkBytes.fromUtf8String(text); EncryptRequest encryptRequest = EncryptRequest.builder() .keyId(keyId) .plaintext(myBytes) .build(); CompletableFuture<EncryptResponse> responseFuture = getAsyncClient().encrypt(encryptRequest).toCompletableFuture(); return responseFuture.whenComplete((response, ex) -> { if (response != null) { String algorithm = response.encryptionAlgorithm().toString(); logger.info("The string was encrypted with algorithm {}.", algorithm); } else { throw new RuntimeException(ex); } }).thenApply(EncryptResponse::ciphertextBlob); }
  • Para API obtener más información, consulte Cifrar en AWS SDK for Java 2.x APIreferencia.

Kotlin
SDKpara Kotlin
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

suspend fun encryptData(keyIdValue: String): ByteArray? { val text = "This is the text to encrypt by using the AWS KMS Service" val myBytes: ByteArray = text.toByteArray() val encryptRequest = EncryptRequest { keyId = keyIdValue plaintext = myBytes } KmsClient { region = "us-west-2" }.use { kmsClient -> val response = kmsClient.encrypt(encryptRequest) val algorithm: String = response.encryptionAlgorithm.toString() println("The encryption algorithm is $algorithm") // Return the encrypted data. return response.ciphertextBlob } } suspend fun decryptData( encryptedDataVal: ByteArray?, keyIdVal: String?, path: String, ) { val decryptRequest = DecryptRequest { ciphertextBlob = encryptedDataVal keyId = keyIdVal } KmsClient { region = "us-west-2" }.use { kmsClient -> val decryptResponse = kmsClient.decrypt(decryptRequest) val myVal = decryptResponse.plaintext // Write the decrypted data to a file. if (myVal != null) { File(path).writeBytes(myVal) } } }
  • Para API obtener más información, consulta Cómo cifrar como referencia AWS SDK sobre Kotlin API.

PHP
SDK para PHP
nota

Hay más información al respecto. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

/*** * @param string $keyId * @param string $text * @return Result */ public function encrypt(string $keyId, string $text) { try { return $this->client->encrypt([ 'KeyId' => $keyId, 'Plaintext' => $text, ]); }catch(KmsException $caught){ if($caught->getAwsErrorMessage() == "DisabledException"){ echo "The request was rejected because the specified KMS key is not enabled.\n"; } throw $caught; } }
  • Para API obtener más información, consulte Cifrar en AWS SDK for PHP APIreferencia.

Python
SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class KeyEncrypt: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyEncrypt": """ Creates a KeyEncrypt instance with a default KMS client. :return: An instance of KeyEncrypt initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def encrypt(self, key_id: str, text: str) -> str: """ Encrypts text by using the specified key. :param key_id: The ARN or ID of the key to use for encryption. :param text: The text to encrypt. :return: The encrypted version of the text. """ try: response = self.kms_client.encrypt(KeyId=key_id, Plaintext=text.encode()) print( f"The string was encrypted with algorithm {response['EncryptionAlgorithm']}" ) return response["CiphertextBlob"] except ClientError as err: if err.response["Error"]["Code"] == "DisabledException": logger.error( "Could not encrypt because the key %s is disabled.", key_id ) else: logger.error( "Couldn't encrypt text. Here's why: %s", err.response["Error"]["Message"], ) raise
  • Para API obtener más información, consulte Cifrar en la AWS SDKreferencia de Python (Boto3). API

Ruby
SDKpara Ruby
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

require 'aws-sdk-kms' # v2: require 'aws-sdk' # ARN of the AWS KMS key. # # Replace the fictitious key ARN with a valid key ID keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' text = '1234567890' client = Aws::KMS::Client.new(region: 'us-west-2') resp = client.encrypt({ key_id: keyId, plaintext: text }) # Display a readable version of the resulting encrypted blob. puts 'Blob:' puts resp.ciphertext_blob.unpack('H*')
  • Para API obtener más información, consulte Cifrar en AWS SDK for Ruby APIreferencia.

Rust
SDKpara Rust
nota

Hay más información GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

async fn encrypt_string( verbose: bool, client: &Client, text: &str, key: &str, out_file: &str, ) -> Result<(), Error> { let blob = Blob::new(text.as_bytes()); let resp = client.encrypt().key_id(key).plaintext(blob).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); let mut ofile = File::create(out_file).expect("unable to create file"); ofile.write_all(s.as_bytes()).expect("unable to write"); if verbose { println!("Wrote the following to {:?}", out_file); println!("{}", s); } Ok(()) }
  • Para API obtener más información, consulte Cifrar AWS SDKpara obtener información sobre Rust API.

Para obtener una lista completa de guías para AWS SDK desarrolladores y ejemplos de código, consulteUso de este servicio con un SDK de AWS. En este tema también se incluye información sobre cómo empezar y detalles sobre SDK las versiones anteriores.