に最終更新
AES_DECRYPT
説明
AES 復号関数です。この関数は MySQL の AES_DECRYPT 関数と同じ動作をします。デフォルトのアルゴリズムは AES_128_ECB で、パディング方式は PKCS7 です。
構文
AES_DECRYPT( <str>, <key_str>[, <init_vector>][, <encryption_mode>])
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 復号するテキスト |
<key_str> | 鍵です。この鍵は十六進数表記ではなく、エンコードされた文字列として指定します。たとえば、128 ビット鍵による暗号化では key_str の長さを 16 にします。鍵が短い場合は ゼロ埋め で補い、長い場合は循環 XOR で最終的な鍵を求めます。たとえば、アルゴリズムで使う 128 ビット鍵を key とすると、key[i] = key_str[i] ^ key_str[i+128] ^ key_str[i+256] ^ ... となります。 |
<init_vector> | 省略可能。アルゴリズムで使う初期化ベクトルです。特定のアルゴリズムでのみ有効です。省略すると Doris は組み込みのベクトルを使用します。 |
<encryption_mode> | 省略可能。暗号化アルゴリズムを指定します。選択可能な値は変数で示されます。 |
戻り値
復号に成功した場合は復号されたデータを返します。通常は平文のバイナリ表現です。
復号に失敗した場合は NULL を返します。
使用例
復号に成功する場合
デフォルトのアルゴリズムを使用する場合
set block_encryption_mode='';
select aes_decrypt(from_base64('wr2JEDVXzL9+2XtRhgIloA=='),'F3229A0B371ED2D9441B830D21A390C3');
+--------------------------------------------------------------------------------+
| aes_decrypt(from_base64('wr2JEDVXzL9+2XtRhgIloA=='), '***', '', 'AES_128_ECB') |
+--------------------------------------------------------------------------------+
| text |
+--------------------------------------------------------------------------------+
AES_256_CBC アルゴリズムを使用する場合
set block_encryption_mode="AES_256_CBC";
select aes_decrypt(from_base64('3dym0E7/+1zbrLIaBVNHSw=='),'F3229A0B371ED2D9441B830D21A390C3');
+--------------------------------------------------------------------------------+
| aes_decrypt(from_base64('3dym0E7/+1zbrLIaBVNHSw=='), '***', '', 'AES_256_CBC') |
+--------------------------------------------------------------------------------+
| text |
+--------------------------------------------------------------------------------+
AES_256_CBC アルゴリズムを使用し、初期化ベクトルを設定する場合
select AES_DECRYPT(FROM_BASE64('tsmK1HzbpnEdR2//WhO+MA=='),'F3229A0B371ED2D9441B830D21A390C3', '0123456789');
+------------------------------------------------------------------------------------------+
| aes_decrypt(from_base64('tsmK1HzbpnEdR2//WhO+MA=='), '***', '0123456789', 'AES_256_CBC') |
+------------------------------------------------------------------------------------------+
| text |
+------------------------------------------------------------------------------------------+
復号に失敗する場合
select AES_DECRYPT(FROM_BASE64('tsmK1H3zbpnEdR2//WhO+MA=='),'F3229A0B371ED2D9441B830D21A390C3', '0123456789');
+-------------------------------------------------------------------------------------------+
| aes_decrypt(from_base64('tsmK1H3zbpnEdR2//WhO+MA=='), '***', '0123456789', 'AES_256_CBC') |
+-------------------------------------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------------------------------------+