Fonction aes_decrypt
S’applique à : Databricks SQL 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
: expressionBINARY
à déchiffrer.key
: expressionBINARY
. 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
: expressionSTRING
facultative décrivant le mode de chiffrement utilisé pour produire la valeur chiffrée.padding
: expressionSTRING
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) :
'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-12824
: AES-19232
: 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 cast(aes_decrypt(unbase64('OkzJi9oaiKJtTMmOrFjH2QWJZYF1UwT+4cA2008LlHA='), '0000111122223333', 'CBC', 'PKCS') AS STRING);
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