try_aes_decrypt
-Funktion
Gilt für: Databricks SQL Databricks Runtime 13.3 LTS und höher
Entschlüsselt eine Binärdatei, die mithilfe der AES-Verschlüsselung erstellt wurde, und gibt NULL zurück, wenn dies aus irgendeinem Grund fehlschlägt.
Syntax
try_aes_decrypt(expr, key [, mode [, padding [, aad]]])
Argumente
expr
: Der zu entschlüsselnde BINARY-Ausdruck.key
: Ein BINARY-Ausdruck. Muss mit dem Schlüssel übereinstimmen, der ursprünglich zum Generieren des verschlüsselten Werts verwendet wurde, und 16, 24 oder 32 Bytes lang sein.mode
: Ein optionaler STRING-Ausdruck, der den Verschlüsselungsmodus beschreibt, der zum Generieren des verschlüsselten Werts verwendet wird.padding
: Ein optionaler STRING-Ausdruck, der beschreibt, wie die Verschlüsselung das Auffüllen des Werts auf die Schlüssellänge behandelt hat.aad
: Ein optionalerSTRING
-Ausdruck, der authentifizierte zusätzliche Daten (AAD) imGCM
-Modus bereitstellt. Muss mit denaad
übereinstimmen, die zum Generieren des verschlüsselten Werts verwendet werden. Gilt für Databricks SQL und Databricks Runtime 13.3 LTS und höher
Gibt zurück
Einen BINARY-Ausdruck
mode
muss eine der folgenden Optionen sein (Groß-/Kleinschreibung wird nicht beachtet):
'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'
gültig.'DEFAULT'
: Verwendet'NONE'
für den'GCM'
-Modus und'PKCS'
für den'ECB'
-Modus.
Der Algorithmus hängt von der Länge des Schlüssels ab:
16
: AES-12824
: AES-19232
: AES-256
Verwenden Sie zum Melden von Fehlern im Falle von Fehlerbedingungen anstelle von NULL
try_aes_decrypt.
Beispiele
> 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