暗号化関数
これらの関数は、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
構文
引数
mode— 復号化モード。Stringciphertext— 復号化する必要がある暗号化されたテキスト。Stringkey— 復号化キー。Stringiv— オプション。 初期化ベクタ。String
返される値
復号化された文字列を返します。 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-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)
例
テーブルを作成し、データを挿入