Freigeben über


aes_encrypt-Funktion

Gilt für: Häkchen ja Databricks SQL Häkchen 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üsselnde BINARY-Ausdruck.
  • key: Ein BINARY-Ausdruck. Der Schlüssel, der zum Verschlüsseln von expr verwendet wird. Er muss 16, 24 oder 32 Bytes lang sein.
  • mode: Ein optionaler STRING-Ausdruck, der den Verschlüsselungsmodus beschreibt.
  • padding: Ein optionaler STRING-Ausdruck, der beschreibt, wie die Verschlüsselung das Auffüllen des Werts auf die Schlüssellänge behandelt.
  • iv: Ein optionaler STRING-Ausdruck, der einen Initialisierungsvektor (IV) für die Modi GCM oder CBC bereitstellt. Gilt für Databricks SQL und Databricks Runtime 13.3 LTS und höher
  • aad: Ein optionaler STRING-Ausdruck, der authentifizierte zusätzliche Daten (AAD) im GCM-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, um expr auf ein Vielfaches der key-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-128
  • 24: AES-192
  • 32: 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