

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Funções de criptografia e descriptografia
<a name="encryption-decryption-functions"></a>

As funções de criptografia e descriptografia ajudam os desenvolvedores de SQL a proteger dados confidenciais contra acesso não autorizado ou uso indevido, convertendo-os entre um formulário de texto simples legível e um formulário de texto cifrado ilegível.

AWS Clean Rooms O Spark SQL é compatível com as seguintes funções de criptografia e decodificação:

**Topics**
+ [função AES\$1ENCRYPT](AES_ENCRYPT.md)
+ [função AES\$1DECRYPT](AES_DECRYPT.md)

# função AES\$1ENCRYPT
<a name="AES_ENCRYPT"></a>

A função AES\$1ENCRYPT é usada para criptografar dados usando o algoritmo Advanced Encryption Standard (AES).

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

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

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

 *expr*   
O valor binário a ser criptografado.

 *chave*   
A senha a ser usada para criptografar os dados.  
Comprimentos de chave de 16, 24 e 32 bits são suportados.

 *modo*   
Especifica qual modo de criptografia de bloco deve ser usado para criptografar mensagens.   
Modos válidos: ECB (eletrônico CodeBook), GCM (modo Galois/Counter), CBC (Cipher-Block Chaining).

 *acolchoamento*   
Especifica como preencher mensagens cujo tamanho não seja múltiplo do tamanho do bloco.   
Valores válidos: PKCS, NONE, DEFAULT.   
O preenchimento DEFAULT significa PKCS (Padrões de Criptografia de Chave Pública) para ECB, NONE para GCM e PKCS para CBC.  
As combinações suportadas de (*modo*, *preenchimento*) são ('ECB', 'PKCS'), ('GCM', 'NONE') e ('CBC', 'PKCS').

 *iv*   
Vetor de inicialização opcional (IV). Compatível apenas com os modos CBC e GCM.   
Valores válidos: 12 bytes para GCM e 16 bytes para CBC.

 *anúncio*   
Dados autenticados adicionais (AAD) opcionais. Compatível apenas com o modo GCM. Isso pode ser qualquer entrada de formato livre e deve ser fornecido tanto para criptografia quanto para decodificação.

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

A função AES\$1ENCRYPT retorna um valor criptografado de *expr* usando AES em determinado modo com o preenchimento especificado.

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

O exemplo a seguir demonstra como usar a função AES\$1ENCRYPT do Spark SQL para criptografar com segurança uma sequência de dados (nesse caso, a palavra “Spark”) usando uma chave de criptografia especificada. O texto cifrado resultante é então codificado em Base64 para facilitar o armazenamento ou a transmissão.

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

O exemplo a seguir demonstra como usar a função AES\$1ENCRYPT do Spark SQL para criptografar com segurança uma sequência de dados (nesse caso, a palavra “Spark”) usando uma chave de criptografia especificada. O texto cifrado resultante é então representado em formato hexadecimal, o que pode ser útil para tarefas como armazenamento, transmissão ou depuração de dados.

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

O exemplo a seguir demonstra como usar a função AES\$1ENCRYPT do Spark SQL para criptografar com segurança uma sequência de dados (nesse caso, “Spark SQL”) usando uma chave de criptografia, um modo de criptografia e um modo de preenchimento especificados. O texto cifrado resultante é então codificado em Base64 para facilitar o armazenamento ou a transmissão.

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

# função AES\$1DECRYPT
<a name="AES_DECRYPT"></a>

A função AES\$1DECRYPT é usada para descriptografar dados usando o algoritmo Advanced Encryption Standard (AES).

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

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

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

 *expr*   
O valor binário a ser decifrado.

 *chave*   
A frase secreta a ser usada para descriptografar os dados.  
A frase secreta deve corresponder à chave originalmente usada para produzir o valor criptografado e ter 16, 24 ou 32 bytes.

 *modo*   
Especifica qual modo de criptografia de bloco deve ser usado para descriptografar mensagens.   
Modos válidos: ECB, GCM, CBC.

 *acolchoamento*   
Especifica como preencher mensagens cujo tamanho não seja múltiplo do tamanho do bloco.   
Valores válidos: PKCS, NONE, DEFAULT.   
O preenchimento DEFAULT significa PKCS para ECB, NONE para GCM e PKCS para CBC.

 *anúncio*   
Dados autenticados adicionais (AAD) opcionais. Compatível apenas com o modo GCM. Isso pode ser qualquer entrada de formato livre e deve ser fornecido tanto para criptografia quanto para decodificação.

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

Retorna um valor descriptografado de *expr* usando AES no modo com preenchimento.

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

O exemplo a seguir demonstra como usar a função AES\$1ENCRYPT do Spark SQL para criptografar com segurança uma sequência de dados (nesse caso, a palavra “Spark”) usando uma chave de criptografia especificada. O texto cifrado resultante é então codificado em Base64 para facilitar o armazenamento ou a transmissão. 

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

O exemplo a seguir demonstra como usar a função AES\$1DECRYPT do Spark SQL para descriptografar dados que foram previamente criptografados e codificados em Base64. O processo de decodificação requer a chave e os parâmetros de criptografia corretos (modo de criptografia e modo de preenchimento) para recuperar com êxito os dados de texto sem formatação originais.

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