暗号化関数
これらの関数は、AES(Advanced Encryption Standard)アルゴリズムを用いてデータの暗号化および復号を行います。
鍵長は暗号化モードに依存します。-128-、-196-、-256- 各モードに対して、それぞれ 16、24、32 バイトの長さになります。
初期化ベクトルの長さは常に 16 バイトです(16 バイトを超える部分は無視されます)。
aes_decrypt_mysql
導入バージョン: v20.12
MySQL の AES_ENCRYPT 関数で暗号化されたデータを復号します。
同じ入力に対しては、decrypt と同じ平文を生成します。
key や iv が本来想定される長さより長い場合、aes_decrypt_mysql は MySQL の aes_decrypt と同様に動作し、key を「折りたたみ」、iv の余分なビットを無視します。
以下の復号モードをサポートします:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-cfb128
- aes-128-ofb, aes-192-ofb, aes-256-ofb
構文
引数
戻り値
復号後の文字列を返します。String
使用例
MySQL データの復号
aes_encrypt_mysql
導入バージョン: v20.12
MySQL の AES_ENCRYPT 関数と同じ方法でテキストを暗号化します。
生成された暗号文は MySQL の AES_DECRYPT 関数で復号できます。
同じ入力に対しては encrypt 関数と同じ暗号文を生成します。
key または iv が本来の長さより長い場合、aes_encrypt_mysql は MySQL の aes_encrypt と同様に動作し、key を「折りたたみ」処理し、iv の余分なビットは無視します。
サポートされている暗号化モードは次のとおりです:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-ofb, aes-192-ofb, aes-256-ofb
構文
引数
mode— 暗号化モード。Stringplaintext— 暗号化するテキスト。Stringkey— 暗号鍵。modeが要求する長さより長い場合、MySQL 固有のキー折りたたみ処理が行われます。Stringiv— 任意。初期化ベクトル。先頭の 16 バイトのみが考慮されます。String
戻り値
暗号文を表すバイナリ文字列。String
使用例
同一入力の比較
長いキーを使用すると暗号化に失敗する
MySQL 互換性
IV を長くしても結果は同じ
decrypt
導入バージョン: v20.12
この関数は、以下のモードで AES により暗号化されたバイナリ文字列を復号します。
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-ofb, aes-192-ofb, aes-256-ofb
- aes-128-gcm, aes-192-gcm, aes-256-gcm
- aes-128-ctr, aes-192-ctr, aes-256-ctr
- aes-128-cfb, aes-128-cfb1, aes-128-cfb8
構文
引数
mode— 復号モード。Stringciphertext— 復号対象の暗号化されたテキスト。Stringkey— 復号鍵。Stringiv— 初期化ベクトル。-gcmモードでは必須で、それ以外では任意。Stringaad— 追加認証データ。この値が正しくない場合は復号されません。-gcmモードでのみ有効で、それ以外のモードでは例外をスローします。String
戻り値
復号されたプレーンテキストを返します。String
例
暗号化されたデータを正しく復号する
暗号化データの誤復号
encrypt
導入バージョン: v20.12
平文を次のいずれかのモードで AES を使用して暗号文に変換します:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-ofb, aes-192-ofb, aes-256-ofb
- aes-128-gcm, aes-192-gcm, aes-256-gcm
- aes-128-ctr, aes-192-ctr, aes-256-ctr
- aes-128-cfb, aes-128-cfb1, aes-128-cfb8
構文
引数
mode— 暗号化モード。Stringplaintext— 暗号化対象のテキスト。Stringkey— 暗号鍵。Stringiv— 初期化ベクトル。-gcmモードでは必須で、それ以外では任意。Stringaad— 追加認証データ。これは暗号化されないが、復号に影響する。-gcmモードでのみ有効で、それ以外では例外がスローされる。String
戻り値
バイナリ文字列形式の暗号文を返す。String
例
暗号化の例
GCM モードの使用例
tryDecrypt
導入バージョン: v22.10
decrypt 関数と類似していますが、誤ったキーを使用して復号に失敗した場合には NULL を返します。
構文
引数
mode— 復号モード。Stringciphertext— 復号対象の暗号化テキスト。Stringkey— 復号キー。Stringiv— オプション。初期化ベクトル。-gcmモードでは必須で、それ以外のモードでは任意。Stringaad— オプション。追加認証データ。この値が正しくない場合は復号は行われません。-gcmモードでのみ有効で、それ以外のモードでは例外をスローします。String
戻り値
復号された文字列を返し、復号に失敗した場合は NULL を返します。Nullable(String)
例
テーブルの作成とデータの挿入