Fonction aes_encrypt

S’applique à :coche marquée oui Databricks SQL coche marquée oui Databricks Runtime 10.4 LTS et versions ultérieures

Chiffre un binaire avec le chiffrement AES.

Syntaxe

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

Arguments

  • expr : expression BINARY à chiffrer.
  • key : expression BINARY. Clé à utiliser pour chiffrer expr. Elle doit avoir une longueur de 16, 24 ou 32 octets.
  • mode : expression STRING facultative décrivant le mode de chiffrement.
  • padding : expression STRING facultative décrivant comment le chiffrement gère le remplissage de la valeur pour atteindre la longueur de clé.
  • iv : expression STRING facultative fournissant un vecteur d’initialisation (IV) pour les modes GCM ou CBC. S’applique à Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures.
  • aad : expression STRING facultative fournissant des données supplémentaires authentifiées (AAD) en mode GCM. S’applique à Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures.

Retours

BINARY.

mode doit être l’un des éléments suivants (insensible à la casse) :

  • 'CBC' : Utiliser le mode Cipher Block Chaining (CBC) S’applique à Databricks SQL, Databricks Runtime 13.3 LTS et versions ultérieures.
  • 'ECB' : utilisez le mode Electronic CodeBook (ECB).
  • 'GCM' : utilisez Galois/Counter Mode (GCM). Il s’agit de la valeur par défaut.

padding doit être l’un des éléments suivants (insensible à la casse) :

  • 'NONE' : n’utilise aucun remplissage. Valide uniquement avec 'GCM'.
  • 'PKCS' : utilise le remplissage Public Key Cryptography Standards (PKCS). Valide uniquement pour 'ECB' et 'CBC'. Le remplissage PKCS ajoute entre 1 et le nombre d’octets de la longueur de clé pour remplir expr jusqu’à un multiple de la longueur de key. La valeur de chaque octet de remplissage est le nombre d’octets remplis.
  • 'DEFAULT' : utilise 'NONE' pour le mode 'GCM' et 'PKCS' pour 'ECB' et 'CBC'.

iv, si spécifié, doit avoir une longueur de 12 octets pour GCM et 16 octets pour CBC.

L’algorithme dépend de la longueur de la clé :

  • 16 : AES-128
  • 24 : AES-192
  • 32 : AES-256

Exemples

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

> SELECT cast(aes_decrypt(unbase64('4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn'),
                          'abcdefghijklmnop') AS STRING);
  Spark

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

> SELECT cast(aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='),
                          '1234567890abcdef', 'ECB', 'PKCS') AS STRING);
  Spark SQL

> SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'GCM'));
  2sXi+jZd/ws+qFC1Tnzvvde5lz+8Haryz9HHBiyrVohXUG7LHA==

> SELECT cast(aes_decrypt(unbase64('2sXi+jZd/ws+qFC1Tnzvvde5lz+8Haryz9HHBiyrVohXUG7LHA=='),
                          '1234567890abcdef', 'GCM') AS STRING);
  Spark SQL

> SELECT base64(aes_encrypt('Spark SQL', '1234567890abcdef', 'GCM', 'DEFAULT', '123456789012', 'Some AAD'));
  MTIzNDU2Nzg5MDEyMdXvR41sJqwZ6hnTU8FRTTtXbL8yeChIZA==

> SELECT cast(aes_decrypt(unbase64('MTIzNDU2Nzg5MDEyMdXvR41sJqwZ6hnTU8FRTTtXbL8yeChIZA=='),
                          '1234567890abcdef', 'GCM', 'DEFAULT', 'Some AAD') AS STRING);
  Spark SQL