Fonction aes_encrypt
S’applique à : Databricks SQL 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
: expressionBINARY
à chiffrer.key
: expressionBINARY
. Clé à utiliser pour chiffrerexpr
. Elle doit avoir une longueur de 16, 24 ou 32 octets.mode
: expressionSTRING
facultative décrivant le mode de chiffrement.padding
: expressionSTRING
facultative décrivant comment le chiffrement gère le remplissage de la valeur pour atteindre la longueur de clé.iv
: expressionSTRING
facultative fournissant un vecteur d’initialisation (IV) pour les modesGCM
ouCBC
. S’applique à Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures.aad
: expressionSTRING
facultative fournissant des données supplémentaires authentifiées (AAD) en modeGCM
. 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 remplirexpr
jusqu’à un multiple de la longueur dekey
. 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-12824
: AES-19232
: 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