aes_encrypt fungsi

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

Mendekripsi biner menggunakan enkripsi AES.

Sintaks

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

Argumen

  • expr: Ekspresi BINARY yang akan dienkripsi.
  • key: Sebuah BINARY ekspresi. Kunci yang akan digunakan untuk mengenkripsi expr. Panjangnya harus 16, 24, atau 32 byte.
  • mode: Ekspresi opsional STRING yang menjelaskan mode enkripsi.
  • padding: Ekspresi opsional STRING yang menjelaskan bagaimana enkripsi menangani padding nilai ke panjang kunci.
  • iv: Ekspresi opsional STRING yang menyediakan vektor inisialisasi (IV) untuk GCM mode atau CBC . Berlaku untuk Databricks SQL dan Databricks Runtime 13.3 LTS ke atas.
  • aad: Ekspresi opsional STRING yang menyediakan data tambahan yang diautentikasi (AAD) dalam GCM mode. Berlaku untuk Databricks SQL dan Databricks Runtime 13.3 LTS ke atas.

Mengembalikan

BINARY.

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

  • 'CBC': Gunakan mode Cipher-Block Chaining (CBC). Berlaku untuk Databricks SQL, Databricks Runtime 13.3 LTS ke atas.
  • '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' dan 'CBC'. Bantalan PKCS menambahkan antara 1 dan jumlah byte panjang kunci ke bantalan expr ke kelipatan key panjang. Nilai setiap byte bantalan adalah jumlah byte yang diberi bantalan.
  • 'DEFAULT': Menggunakan 'NONE' untuk 'GCM' dan 'PKCS' untuk 'ECB', dan 'CBC' mode.

iv, jika ditentukan, harus panjang 12 byte untuk GCM dan 16 byte untuk CBC.

Algoritma tergantung pada panjang kunci:

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

Kondisi kesalahan umum

Contoh

> 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

> SELECT aes_encrypt('data', 'short');
  Error: INVALID_PARAMETER_VALUE.AES_KEY_LENGTH