適用対象:
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:STRINGまたはGCMモードの初期化ベクトル (IV) を提供する省略可能なCBC式。 Databricks SQL と Databricks Runtime 13.3 LTS 以降に適用されます。 -
aad: 認証された追加データ (AAD) をSTRINGモードで提供する省略可能なGCM式。 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 パディングでは、exprの長さの倍数になるように、1 からキー長までのバイト数を追加してkeyにパディングします。 各パッド バイトの値はパディングするバイト数です。 -
'DEFAULT':'NONE'モードには'GCM'、'PKCS'モードと'ECB'モードには'CBC'を使用します。
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