

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.

# Funciones de cifrado y descifrado
<a name="encryption-decryption-functions"></a>

Las funciones de cifrado y descifrado ayudan a los desarrolladores de SQL a proteger los datos confidenciales contra el acceso no autorizado o el uso indebido al convertirlos de un formato legible de texto plano a uno de texto cifrado ilegible.

AWS Clean Rooms Spark SQL admite las siguientes funciones de cifrado y descifrado:

**Topics**
+ [Función AES\$1ENCRYPT](AES_ENCRYPT.md)
+ [Función AES\$1DECRYPT](AES_DECRYPT.md)

# Función AES\$1ENCRYPT
<a name="AES_ENCRYPT"></a>

La función AES\$1ENCRYPT se utiliza para cifrar datos mediante el algoritmo AES (Advanced Encryption Standard).

## Sintaxis
<a name="AES_ENCRYPT-syntax"></a>

```
aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]])
```

## Argumentos
<a name="AES_ENCRYPT-arguments"></a>

 *expr*   
El valor binario que se va a cifrar.

 *clave*   
La contraseña que se utilizará para cifrar los datos.  
Se admiten longitudes de clave de 16, 24 y 32 bits.

 *mode*   
Especifica qué modo de cifrado por bloques se debe utilizar para cifrar los mensajes.   
Modos válidos: ECB (electrónico CodeBook), GCM (modo Galois/Counter) y CBC (encadenamiento de bloques cifrados).

 *acolchado*   
Especifica cómo rellenar los mensajes cuya longitud no sea un múltiplo del tamaño del bloque.   
Valores válidos: PKCS, NONE, DEFAULT.   
El relleno PREDETERMINADO significa PKCS (estándares de criptografía de clave pública) para ECB, NONE para GCM y PKCS para CBC.  
Las combinaciones admitidas de (*modo*, *relleno*) son («ECB», «PKCS»), («GCM», «NONE») y («CBC», «PKCS»).

 *iv*   
Vector de inicialización opcional (IV). Solo se admite en los modos CBC y GCM.   
Valores válidos: 12 bytes de longitud para GCM y 16 bytes para CBC.

 *aad*   
Datos autenticados adicionales (AAD) opcionales. Solo se admite en el modo GCM. Puede ser cualquier entrada de formato libre y debe proporcionarse tanto para el cifrado como para el descifrado.

## Tipo de retorno
<a name="AES_ENCRYPT-returm-type"></a>

La función AES\$1ENCRYPT devuelve un valor cifrado de *expr* mediante AES en un modo determinado con el relleno especificado.

## Ejemplos
<a name="AES_ENCRYPT-example"></a>

El siguiente ejemplo muestra cómo utilizar la función AES\$1ENCRYPT de Spark SQL para cifrar de forma segura una cadena de datos (en este caso, la palabra «Spark») mediante una clave de cifrado específica. A continuación, el texto cifrado resultante se codifica en Base64 para facilitar su almacenamiento o transmisión.

```
SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop'));
  4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn
```

El siguiente ejemplo muestra cómo utilizar la función AES\$1ENCRYPT de Spark SQL para cifrar de forma segura una cadena de datos (en este caso, la palabra «Spark») mediante una clave de cifrado específica. A continuación, el texto cifrado resultante se representa en formato hexadecimal, lo que puede resultar útil para tareas como el almacenamiento, la transmisión o la depuración de datos.

```
SELECT hex(aes_encrypt('Spark', '0000111122223333'));
 83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94
```

El siguiente ejemplo muestra cómo utilizar la función AES\$1ENCRYPT de Spark SQL para cifrar de forma segura una cadena de datos (en este caso, «Spark SQL») mediante una clave de cifrado, un modo de cifrado y un modo de relleno específicos. A continuación, el texto cifrado resultante se codifica en Base64 para facilitar su almacenamiento o transmisión.

```
SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'ECB', 'PKCS'));
 3lmwu+Mw0H3fi5NDvcu9lg==
```

# Función AES\$1DECRYPT
<a name="AES_DECRYPT"></a>

La función AES\$1DECRYPT se utiliza para descifrar datos mediante el algoritmo AES (Advanced Encryption Standard).

## Sintaxis
<a name="AES_DECRYPT-syntax"></a>

```
aes_decrypt(expr, key[, mode[, padding[, aad]]])
```

## Argumentos
<a name="AES_DECRYPT-arguments"></a>

 *expr*   
El valor binario que se va a descifrar.

 *clave*   
La contraseña que se utilizará para descifrar los datos.  
La contraseña debe coincidir con la clave utilizada originalmente para generar el valor cifrado y tener una longitud de 16, 24 o 32 bytes.

 *mode*   
Especifica qué modo de cifrado por bloques se debe utilizar para descifrar los mensajes.   
Modos válidos: ECB, GCM, CBC.

 *acolchado*   
Especifica cómo rellenar los mensajes cuya longitud no sea un múltiplo del tamaño del bloque.   
Valores válidos: PKCS, NONE, DEFAULT.   
El relleno PREDETERMINADO significa PKCS para ECB, NONE para GCM y PKCS para CBC.

 *triste*   
Datos autenticados adicionales (AAD) opcionales. Solo se admite en el modo GCM. Puede ser cualquier entrada de formato libre y debe proporcionarse tanto para el cifrado como para el descifrado.

## Tipo de retorno
<a name="AES_DECRYPT-return-type"></a>

Devuelve un valor descifrado de *expr* utilizando AES en modo con relleno.

## Ejemplos
<a name="AES_DECRYPT-examples"></a>

El siguiente ejemplo muestra cómo utilizar la función AES\$1ENCRYPT de Spark SQL para cifrar de forma segura una cadena de datos (en este caso, la palabra «Spark») mediante una clave de cifrado específica. A continuación, el texto cifrado resultante se codifica en Base64 para facilitar su almacenamiento o transmisión. 

```
SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop'));
  4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn
```

En el siguiente ejemplo, se muestra cómo utilizar la función AES\$1DECRYPT de Spark SQL para descifrar datos previamente cifrados y codificados en Base64. El proceso de descifrado requiere la clave y los parámetros de cifrado correctos (modo de cifrado y modo de relleno) para recuperar correctamente los datos originales en texto plano.

```
SELECT aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='), '1234567890abcdef', 'ECB', 'PKCS');
 Spark SQL
```