Fonction try_aes_decrypt
S’applique à : Databricks SQL 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
: expressionSTRING
facultative fournissant des données supplémentaires authentifiées (AAD) en modeGCM
. Doit correspondre auaad
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-12824
: AES-19232
: 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