try_aes_decrypt-Funktion

Gilt für: Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja 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 optionaler STRING-Ausdruck, der authentifizierte zusätzliche Daten (AAD) im GCM-Modus bereitstellt. Muss mit den aad ü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-128
  • 24: AES-192
  • 32: AES-256

Verwenden Sie zum Melden von Fehlern im Falle von Fehlerbedingungen anstelle von NULLtry_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