Funktionen try_aes_decrypt

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 13.3 LTS och senare

Dekrypterar en binär fil som skapas med hjälp av AES-kryptering och returnerar NULL om det misslyckas av någon anledning.

Syntax

try_aes_decrypt(expr, key [, mode [, padding [, aad]]])

Argument

  • expr: Binärt uttryck som ska dekrypteras.
  • key: Ett BINÄRt uttryck. Måste matcha den nyckel som ursprungligen användes för att producera det krypterade värdet och vara 16, 24 eller 32 byte långt.
  • mode: Ett valfritt STRING-uttryck som beskriver krypteringsläget som används för att skapa det krypterade värdet.
  • padding: Ett valfritt STRING-uttryck som beskriver hur kryptering hanterade utfyllnad av värdet till nyckellängd.
  • aad: Ett valfritt STRING uttryck som tillhandahåller autentiserade ytterligare data (AAD) i GCM läge. Måste matcha det aad som används för att producera det krypterade värdet. Gäller för Databricks SQL och Databricks Runtime 13.3 LTS och senare.

Returer

EN BINÄR FIL.

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

  • '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'.
  • 'DEFAULT': Används 'NONE' för 'GCM' och 'PKCS' för 'ECB' läge.

Algoritmen beror på nyckelns längd:

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

Om du vill skapa fel i stället för NULL vid feltillstånd använder du try_aes_decrypt.

Exempel

> 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