

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fonctions de chiffrement et de déchiffrement
<a name="encryption-decryption-functions"></a>

Les fonctions de chiffrement et de déchiffrement aident les développeurs SQL à protéger les données sensibles contre tout accès non autorisé ou toute utilisation abusive en les convertissant entre une forme lisible en texte clair et une forme chiffrée illisible.

AWS Clean Rooms Spark SQL prend en charge les fonctions de chiffrement et de déchiffrement suivantes :

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

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

La fonction AES\$1ENCRYPT est utilisée pour chiffrer les données à l'aide de l'algorithme AES (Advanced Encryption Standard).

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

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

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

 *expr*   
La valeur binaire à chiffrer.

 *key*   
Phrase secrète à utiliser pour chiffrer les données.  
Les longueurs de clé de 16, 24 et 32 bits sont prises en charge.

 *mode*   
Spécifie le mode de chiffrement par blocs à utiliser pour chiffrer les messages.   
Modes valides : ECB (électronique CodeBook), GCM (mode Galois/Counter), CBC (Cipher-Block Chaining).

 *rembourrage*   
Spécifie comment ajouter des messages dont la longueur n'est pas un multiple de la taille du bloc.   
Valeurs valides : PKCS, NONE, DEFAULT.   
Le remplissage DEFAULT signifie PKCS (Public Key Cryptography Standards) pour ECB, NONE pour GCM et PKCS pour CBC.  
Les combinaisons prises en charge de (*mode*, *rembourrage*) sont (« ECB », « PKCS »), (« GCM », « NONE ») et (« CBC », « PKCS »).

 *iv*   
Vecteur d'initialisation facultatif (IV). Compatible uniquement avec les modes CBC et GCM.   
Valeurs valides : 12 octets pour le GCM et 16 octets pour le CBC.

 *aad*   
Données authentifiées supplémentaires (AAD) facultatives. Compatible uniquement avec le mode GCM. Il peut s'agir de n'importe quelle entrée libre et doit être fournie à la fois pour le chiffrement et le déchiffrement.

## Type de retour
<a name="AES_ENCRYPT-returm-type"></a>

La fonction AES\$1ENCRYPT renvoie une valeur cryptée de *expr* en utilisant AES dans un mode donné avec le rembourrage spécifié.

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

L'exemple suivant montre comment utiliser la fonction Spark SQL AES\$1ENCRYPT pour chiffrer de manière sécurisée une chaîne de données (dans ce cas, le mot « Spark ») à l'aide d'une clé de chiffrement spécifiée. Le texte chiffré obtenu est ensuite codé en Base64 pour faciliter son stockage ou sa transmission.

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

L'exemple suivant montre comment utiliser la fonction Spark SQL AES\$1ENCRYPT pour chiffrer de manière sécurisée une chaîne de données (dans ce cas, le mot « Spark ») à l'aide d'une clé de chiffrement spécifiée. Le texte chiffré obtenu est ensuite représenté au format hexadécimal, ce qui peut être utile pour des tâches telles que le stockage, la transmission ou le débogage de données.

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

L'exemple suivant montre comment utiliser la fonction Spark SQL AES\$1ENCRYPT pour chiffrer de manière sécurisée une chaîne de données (dans ce cas, « Spark SQL ») à l'aide d'une clé de chiffrement, d'un mode de chiffrement et d'un mode de remplissage spécifiés. Le texte chiffré obtenu est ensuite codé en Base64 pour faciliter son stockage ou sa transmission.

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

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

La fonction AES\$1DECRYPT est utilisée pour déchiffrer les données à l'aide de l'algorithme AES (Advanced Encryption Standard).

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

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

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

 *expr*   
La valeur binaire à déchiffrer.

 *key*   
Phrase secrète à utiliser pour déchiffrer les données.  
La phrase secrète doit correspondre à la clé utilisée à l'origine pour produire la valeur cryptée et avoir une longueur de 16, 24 ou 32 octets.

 *mode*   
Spécifie le mode de chiffrement par blocs à utiliser pour déchiffrer les messages.   
Modes valides : ECB, GCM, CBC.

 *rembourrage*   
Spécifie comment ajouter des messages dont la longueur n'est pas un multiple de la taille du bloc.   
Valeurs valides : PKCS, NONE, DEFAULT.   
Le rembourrage DEFAULT signifie PKCS pour ECB, NONE pour GCM et PKCS pour CBC.

 *aad*   
Données authentifiées supplémentaires (AAD) facultatives. Compatible uniquement avec le mode GCM. Il peut s'agir de n'importe quelle entrée libre et doit être fournie à la fois pour le chiffrement et le déchiffrement.

## Type de retour
<a name="AES_DECRYPT-return-type"></a>

Renvoie une valeur déchiffrée de *expr en utilisant AES en mode* avec rembourrage.

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

L'exemple suivant montre comment utiliser la fonction Spark SQL AES\$1ENCRYPT pour chiffrer de manière sécurisée une chaîne de données (dans ce cas, le mot « Spark ») à l'aide d'une clé de chiffrement spécifiée. Le texte chiffré obtenu est ensuite codé en Base64 pour faciliter son stockage ou sa transmission. 

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

L'exemple suivant montre comment utiliser la fonction Spark SQL AES\$1DECRYPT pour déchiffrer des données précédemment chiffrées et codées en Base64. Le processus de déchiffrement nécessite la clé de chiffrement et les paramètres appropriés (mode de chiffrement et mode de remplissage) pour récupérer correctement les données en texte brut d'origine.

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