Funktionen aes_encrypt

Gäller för:check marked yes Databricks SQL check marked yes Databricks Runtime 10.3 och senare

Krypterar en binär fil med hjälp av AES-kryptering.

Syntax

aes_encrypt(expr, key [, mode [, padding[, iv[, aad]]]])

Argument

  • expr: Uttrycket BINARY som ska krypteras.
  • key: Ett BINARY uttryck. Nyckeln som ska användas för att kryptera expr. Den måste vara 16, 24 eller 32 byte lång.
  • mode: Ett valfritt STRING uttryck som beskriver krypteringsläget.
  • padding: Ett valfritt STRING uttryck som beskriver hur kryptering hanterar utfyllnad av värdet till nyckellängd.
  • iv: Ett valfritt STRING uttryck som tillhandahåller en initieringsvektor (IV) för GCM eller CBC lägen. Gäller för Databricks SQL och Databricks Runtime 13.3 och senare.
  • aad: Ett valfritt STRING uttryck som tillhandahåller autentiserade ytterligare data (AAD) i GCM läge. Gäller för Databricks SQL och Databricks Runtime 13.3 och senare.

Returer

En BINARY.

mode måste vara något av (skiftlägesokänsligt):

  • 'CBC': Använd CBC-läge (Cipher-Block Chaining). Gäller för Databricks SQL, Databricks Runtime 13.2 och senare.
  • 'ECB': Använd läget Electronic CodeBook (ECB).
  • 'GCM': Använd Galois/Counter Mode (GCM). Det här är standardinställningen.

padding måste vara något av (skiftlägesokänsligt):

  • 'NONE': Använder ingen utfyllnad. Endast giltigt för 'GCM'.
  • 'PKCS': Använder PKCS-utfyllnad (Public Key Cryptography Standards). Endast giltigt för 'ECB' och 'CBC'. PKCS-utfyllnad lägger till mellan 1 och nyckellängds antal byte att fylla expr till en multipel av key längden. Värdet för varje pad byte är antalet byte som vadderas.
  • 'DEFAULT': Använder 'NONE' för 'GCM' och 'PKCS' för 'ECB', och 'CBC' läge.

iv, när det anges, måste vara 12 byte långt för GCM och 16 byte för CBC.

Algoritmen beror på nyckelns längd:

  • 16: AES-128
  • 24: AES-192
  • 32: AES-256

Exempel

> 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