Share via


aes_encrypt 関数

適用対象:check marked yes Databricks SQL 「はい」のチェック マーク Databricks Runtime 10.4 LTS 以降

AES 暗号化を使用してバイナリを暗号化します。

構文

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

引数

  • expr: 暗号化する BINARY 式。
  • key: BINARY 式。 expr の暗号化に使用するキー。 16、24、または 32 バイト長である必要があります。
  • mode: 暗号化モードを示す STRING 式 (省略可能)。
  • padding: 値をキー長にするためのパディングを暗号化でどのように処理するかを記述する省略可能な STRING 式。
  • iv: GCM または CBC モードの初期化ベクトル (IV) を提供する省略可能な STRING 式。 Databricks SQL と Databricks Runtime 13.3 LTS 以降に適用されます。
  • aad: 認証された追加データ (AAD) を GCM モードで提供する省略可能な STRING 式。 Databricks SQL と Databricks Runtime 13.3 LTS 以降に適用されます。

返品

BINARY です。

mode は次のいずれかにする必要があります (大文字と小文字は区別されません)。

  • 'CBC': 暗号ブロック連鎖 (CBC) モードを使用します。 Databricks SQL と Databricks Runtime 13.3 LTS 以降に適用されます。
  • 'ECB': 電子コードブック (ECB) モードを使用します。
  • 'GCM': Galois/Counter Mode (GCM) を使用します。 既定のプランです。

padding は次のいずれかにする必要があります (大文字と小文字は区別されません)。

  • 'NONE': 埋め込みを使用しません。 'GCM' でのみ有効です。
  • 'PKCS': 公開キー暗号化標準 (PKCS) の埋め込みを使用します。 'ECB''CBC' でのみ有効です。 PKCS パディングでは、key の長さの倍数になるように、1 からキー長までのバイト数を追加して expr にパディングします。 各パッド バイトの値はパディングするバイト数です。
  • 'DEFAULT': 'GCM' モードには 'NONE''ECB' モードと 'CBC' モードには 'PKCS' を使用します。

iv を指定する場合、GCM の場合は長さ 12 バイト、CBC の場合は 16 バイトにする必要があります。

アルゴリズムはキーの長さによって異なります。

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

> 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