Fonction try_aes_decrypt

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

Déchiffre un fichier binaire produit à l’aide du chiffrement AES et retourne NULL si cela échoue pour une raison quelconque.

Syntaxe

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

Arguments

  • expr : expression binaire (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 de type chaîne (STRING) facultative décrivant le mode de chiffrement utilisé pour produire la valeur chiffrée.
  • padding : expression de type chaîne (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) :

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

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

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

Pour déclencher des erreurs plutôt que NULL en cas de conditions d’erreur, utilisez try_aes_decrypt.

Exemples

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

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

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

> SELECT cast(try_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==

-- 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('Spark SQL', '1234567890abcdef', 'GCM', 'DEFAULT', '123456789012', 'Some AAD'));
  MTIzNDU2Nzg5MDEyMdXvR41sJqwZ6hnTU8FRTTtXbL8yeChIZA==

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