

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzioni di crittografia e decrittografia
<a name="encryption-decryption-functions"></a>

Le funzioni di crittografia e decrittografia aiutano gli sviluppatori SQL a proteggere i dati sensibili dall'accesso non autorizzato o dall'uso improprio convertendoli tra un formato di testo semplice leggibile e un formato di testo cifrato illeggibile.

AWS Clean Rooms Spark SQL supporta le seguenti funzioni di crittografia e decrittografia:

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

# Funzione AES\$1ENCRYPT
<a name="AES_ENCRYPT"></a>

La funzione AES\$1ENCRYPT viene utilizzata per crittografare i dati utilizzando l'algoritmo Advanced Encryption Standard (AES).

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

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

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

 *expr*   
Il valore binario da crittografare.

 *key*   
La passphrase da utilizzare per crittografare i dati.  
Sono supportate lunghezze di chiave di 16, 24 e 32 bit.

 *modalità*   
Speciifica quale modalità di cifratura a blocchi deve essere utilizzata per crittografare i messaggi.   
Modalità valide: ECB (Electronic CodeBook), GCM (Galois/Counter Mode), CBC (Cipher-Block Chaining).

 *imbottitura*   
Specifica come riempire i messaggi la cui lunghezza non è un multiplo della dimensione del blocco.   
Valori validi: PKCS, NONE, DEFAULT.   
Il padding DEFAULT indica PKCS (Public Key Cryptography Standards) per ECB, NONE per GCM e PKCS per CBC.  
Le combinazioni supportate di (*mode*, *padding*) sono ('ECB', 'PKCS'), ('GCM', 'NONE') e ('CBC', 'PKCS').

 *iv*   
Vettore di inizializzazione opzionale (IV). Supportato solo per le modalità CBC e GCM.   
Valori validi: 12 byte di lunghezza per GCM e 16 byte per CBC.

 *aad*   
Dati autenticati aggiuntivi opzionali (AAD). Supportato solo per la modalità GCM. Può essere qualsiasi input in formato libero e deve essere fornito sia per la crittografia che per la decrittografia.

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

La funzione AES\$1ENCRYPT restituisce un valore crittografato di *expr* utilizzando AES in una determinata modalità con il padding specificato.

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

L'esempio seguente mostra come utilizzare la funzione Spark SQL AES\$1ENCRYPT per crittografare in modo sicuro una stringa di dati (in questo caso, la parola «Spark») utilizzando una chiave di crittografia specificata. Il testo cifrato risultante viene quindi codificato in Base64 per semplificare l'archiviazione o la trasmissione.

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

L'esempio seguente mostra come utilizzare la funzione Spark SQL AES\$1ENCRYPT per crittografare in modo sicuro una stringa di dati (in questo caso, la parola «Spark») utilizzando una chiave di crittografia specificata. Il testo cifrato risultante viene quindi rappresentato in formato esadecimale, che può essere utile per attività come l'archiviazione, la trasmissione o il debug dei dati.

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

L'esempio seguente mostra come utilizzare la funzione Spark SQL AES\$1ENCRYPT per crittografare in modo sicuro una stringa di dati (in questo caso, «Spark SQL») utilizzando una chiave di crittografia, una modalità di crittografia e una modalità di riempimento specificate. Il testo cifrato risultante viene quindi codificato in Base64 per semplificare l'archiviazione o la trasmissione.

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

# Funzione AES\$1DECRYPT
<a name="AES_DECRYPT"></a>

La funzione AES\$1DECRYPT viene utilizzata per decrittografare i dati utilizzando l'algoritmo Advanced Encryption Standard (AES).

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

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

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

 *expr*   
Il valore binario da decifrare.

 *key*   
La passphrase da utilizzare per decrittografare i dati.  
La passphrase deve corrispondere alla chiave utilizzata originariamente per produrre il valore crittografato ed essere lunga 16, 24 o 32 byte.

 *modalità*   
Speciifica quale modalità di cifratura a blocchi deve essere utilizzata per decrittografare i messaggi.   
Modalità valide: ECB, GCM, CBC.

 *imbottitura*   
Specifica come riempire i messaggi la cui lunghezza non è un multiplo della dimensione del blocco.   
Valori validi: PKCS, NONE, DEFAULT.   
Il padding DEFAULT indica PKCS per ECB, NONE per GCM e PKCS per CBC.

 *- aad*   
Dati autenticati aggiuntivi opzionali (AAD). Supportato solo per la modalità GCM. Può essere qualsiasi input in formato libero e deve essere fornito sia per la crittografia che per la decrittografia.

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

Restituisce un valore decrittografato di *expr* utilizzando AES in modalità con padding.

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

L'esempio seguente mostra come utilizzare la funzione Spark SQL AES\$1ENCRYPT per crittografare in modo sicuro una stringa di dati (in questo caso, la parola «Spark») utilizzando una chiave di crittografia specificata. Il testo cifrato risultante viene quindi codificato in Base64 per semplificare l'archiviazione o la trasmissione. 

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

L'esempio seguente dimostra come utilizzare la funzione Spark SQL AES\$1DECRYPT per decrittografare dati precedentemente crittografati e codificati in Base64. Il processo di decrittografia richiede la chiave e i parametri di crittografia corretti (modalità di crittografia e modalità padding) per ripristinare correttamente i dati di testo in chiaro originali.

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