try_aes_decrypt fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 13.3 LTS ke atas

Mendekripsi biner yang diproduksi menggunakan enkripsi AES dan mengembalikan NULL jika gagal karena alasan apa pun.

Sintaks

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

Argumen

  • expr: Ekspresi BINER yang akan didekripsi.
  • key: Ekspresi BINER. Harus sama dengan kunci yang awalnya digunakan untuk menghasilkan nilai terenkripsi dan dengan panjang 16, 24, atau 32 byte.
  • mode: Ekspresi STRING opsional yang menjelaskan mode enkripsi yang digunakan untuk menghasilkan nilai terenkripsi.
  • padding: Ekspresi STRING opsional yang menjelaskan cara enkripsi menangani pengisian nilai hingga panjang kunci.
  • aad: Ekspresi opsional STRING yang menyediakan data tambahan yang diautentikasi (AAD) dalam GCM mode. Harus cocok dengan yang aad digunakan untuk menghasilkan nilai terenkripsi. Berlaku untuk Databricks SQL dan Databricks Runtime 13.3 LTS ke atas.

Mengembalikan

BINER.

mode harus salah satu dari (tidak peka huruf besar/kecil):

  • 'ECB': Gunakan mode Electronic CodeBook (ECB).
  • 'GCM': Gunakan Galois/Counter Mode (GCM). Ini adalah default.

padding harus salah satu dari (tidak peka huruf besar/kecil):

  • 'NONE': Tidak menggunakan bantalan. Hanya berlaku untuk 'GCM'.
  • 'PKCS': Menggunakan Standar Kriptografi Kunci Publik (PKCS) padding. Hanya berlaku untuk 'ECB'.
  • 'DEFAULT': Menggunakan mode 'NONE' untuk 'GCM' dan 'PKCS' untuk 'ECB'.

Algoritma tergantung pada panjang kunci:

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

Untuk memunculkan kesalahan alih-alih NULL jika kondisi kesalahan, gunakan aes_decrypt.

Contoh

> 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