に最終更新
SM4_ENCRYPT
説明
SM4 は、金融、通信、電子商取引などで広く使われる国家標準の共通鍵暗号アルゴリズムです。SM4_ENCRYPT 関数は SM4 でデータを暗号化します。デフォルトのアルゴリズムは SM4_128_ECB です。
構文
SM4_ENCRYPT( <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> | 暗号化アルゴリズムの選択肢は変数で指定します |
戻り値
暗号化されたバイナリデータを返します
使用例
デフォルトのアルゴリズムを使用する場合
set block_encryption_mode='';
select TO_BASE64(SM4_ENCRYPT('text','F3229A0B371ED2D9441B830D21A390C3'));
+----------------------------------------------------------+
| to_base64(sm4_encrypt('text', '***', '', 'SM4_128_ECB')) |
+----------------------------------------------------------+
| aDjwRflBrDjhBZIOFNw3Tg== |
+----------------------------------------------------------+
SM4_128_CBC アルゴリズムを使用する場合
set block_encryption_mode="SM4_128_CBC";
select TO_BASE64(SM4_ENCRYPT('text','F3229A0B371ED2D9441B830D21A390C3'));
+----------------------------------------------------------+
| to_base64(sm4_encrypt('text', '***', '', 'SM4_128_CBC')) |
+----------------------------------------------------------+
| FSYstvOmH2cXy7B/072Mug== |
+----------------------------------------------------------+
SM4_128_CBC アルゴリズムを使用し、初期化ベクトルを設定する場合
set block_encryption_mode="SM4_128_CBC";
select to_base64(SM4_ENCRYPT('text','F3229A0B371ED2D9441B830D21A390C3', '0123456789'));
+--------------------------------------------------------------------+
| to_base64(sm4_encrypt('text', '***', '0123456789', 'SM4_128_CBC')) |
+--------------------------------------------------------------------+
| 1Y4NGIukSbv9OrkZnRD1bQ== |
+--------------------------------------------------------------------+