aes_encrypt
-Funktion
Gilt für: Databricks SQL Databricks Runtime 10.4 LTS und höher
Verschlüsselt einen binären Ausdruck mithilfe der AES-Verschlüsselung.
Syntax
aes_encrypt(expr, key [, mode [, padding[, iv[, aad]]]])
Argumente
expr
: Der zu verschlüsselndeBINARY
-Ausdruck.key
: EinBINARY
-Ausdruck. Der Schlüssel, der zum Verschlüsseln vonexpr
verwendet wird. Er muss 16, 24 oder 32 Bytes lang sein.mode
: Ein optionalerSTRING
-Ausdruck, der den Verschlüsselungsmodus beschreibt.padding
: Ein optionalerSTRING
-Ausdruck, der beschreibt, wie die Verschlüsselung das Auffüllen des Werts auf die Schlüssellänge behandelt.iv
: Ein optionalerSTRING
-Ausdruck, der einen Initialisierungsvektor (IV) für die ModiGCM
oderCBC
bereitstellt. Gilt für Databricks SQL und Databricks Runtime 13.3 LTS und höheraad
: Ein optionalerSTRING
-Ausdruck, der authentifizierte zusätzliche Daten (AAD) imGCM
-Modus bereitstellt. Gilt für Databricks SQL und Databricks Runtime 13.3 LTS und höher
Gibt zurück
Ein BINARY
.
mode
muss eine der folgenden Optionen sein (Groß-/Kleinschreibung wird nicht beachtet):
'CBC'
: Verwendet den Cipher Block Chaining-Modus (CBC). Gilt für Databricks SQL, Databricks Runtime 13.3 LTS und höher'ECB'
: Verwendet den Electronic CodeBook-Modus (ECB).'GCM'
: Verwendet den Galois/Counter-Modus (GCM). Dies ist die Standardoption.
padding
muss eine der folgenden Optionen sein (Groß-/Kleinschreibung wird nicht beachtet):
'NONE'
: Verwendet keine Auffüllung. Nur für'GCM'
gültig.'PKCS'
: Verwendet PKCS-Auffüllung (Public Key Cryptography Standards). Nur für'ECB'
und'CBC'
gültig. Bei der PKCS-Auffüllung werden Bytes (Anzahl zwischen 1 und der Schlüssellänge) hinzugefügt, umexpr
auf ein Vielfaches derkey
-Länge aufzufüllen. Der Wert jedes Auffüllbytes entspricht der Anzahl von Bytes, die aufgefüllt werden.'DEFAULT'
: Verwendet'NONE'
für den'GCM'
-Modus und'PKCS'
für den'ECB'
- und'CBC'
-Modus.
iv
, wenn angegeben, muss für GCM
eine Länge von 12 Byte und für CBC
von 16 Byte haben.
Der Algorithmus hängt von der Länge des Schlüssels ab:
16
: AES-12824
: AES-19232
: AES-256
Beispiele
> 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