Fonction aes_decrypt

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

Déchiffre un binaire produit à l’aide du chiffrement AES.

Syntaxe

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

Arguments

  • expr : expression BINARY à déchiffrer.
  • key : expression BINARY. Doit correspondre à la clé utilisée à l’origine pour produire la valeur chiffrée, et avoir une longueur de 16, 24 ou 32 octets.
  • mode : expression STRING facultative décrivant le mode de chiffrement utilisé pour produire la valeur chiffrée.
  • padding : expression STRING facultative décrivant comment le chiffrement a géré le remplissage de la valeur pour atteindre la longueur de clé.
  • aad : expression STRING facultative fournissant des données supplémentaires authentifiées (AAD) en mode GCM. Doit correspondre au aad utilisé pour produire la valeur chiffrée. S’applique à Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures.

Retours

Une valeur 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'.
  • 'DEFAULT' : utilise 'NONE' pour le mode 'GCM' et 'PKCS' pour 'ECB' et 'CBC'.

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

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

Pour tolérer les conditions d’erreur résultant du déchiffrement et du retour de NULL, utilisez plutôt try_aes_decrypt

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

-- try_aes_decrypt tolerates an error where aes_decrypt does not.
> SELECT cast(aes_decrypt(x'1234567890abcdef1234567890abcdef', '1234567890abcdef', 'GCM') AS STRING);
  Error: INVALID_PARAMETER_VALUE.AES_KEY

> SELECT cast(try_aes_decrypt(x'1234567890abcdef1234567890abcdef', '1234567890abcdef', 'GCM') AS STRING);
  NULL

> SELECT base64(aes_encrypt('Apache Spark', '0000111122223333', 'CBC', 'PKCS'));
  U2FsdGVkX1/ERGxwEOTDpDD4bQvDtQaNe+gXGudCcUk=

> SELECT aes_decrypt(unbase64('U2FsdGVkX1/ERGxwEOTDpDD4bQvDtQaNe+gXGudCcUk='), '0000111122223333', 'CBC', 'PKCS');
  Apache Spark

> 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