AES_ENCRYPT(str,key_str)

AES_ENCRYPT(str,key_str), AES_DECRYPT(crypt_str,key_str)

これらの関数では、以前は 「Rijndael」 として知られていた公式の AES ( Advanced Encryption Standard ) アルゴリズムを使用した、データの暗号化と復号化が可能です。128 ビットのキーの長さを使用したエンコードを行いますが、ソースを改変することで 256 ビットまで延長することができます。当社では、より速く、ほとんどの使用では十分に安全なため、128 ビットを採用しています。

AES_ENCRYPT() はストリングを暗号化し、バイナリ ストリングを戻します。AES_DECRYPT() はストリングを暗号化されたストリングを復号化し、本来のストリングを戻します。入力引数の長さは自由です。どちらかの引数が NULL の場合は、この関数の結果も NULL になります。

AES ブロックレベル アルゴリズムであるため、長さが不揃いなストリングのエンコードにはパッドを使用し、次の方式を使って結果ストリングの長さが計算されるようにします。

16 × (trunc(string_length / 16) + 1)

AES_DECRYPT() が無効な日付または不正確なパッドを検出した場合は、NULL が戻されます。しかし、入力データまたはキーが無効になっている場合は、AES_DECRYPT() が非 NULL 値 ( 不要データの可能性あり ) を戻すことも考えられます。

AES 関数を使用して、暗号化されたフォームのデータを、クエリを改変することによって格納することができます :

INSERT INTO t VALUES (1,AES_ENCRYPT('text','password'));

AES_ENCRYPT() および AES_DECRYPT() は、現在 MySQL で使用が可能なものの中で、暗号的に最も安全な暗号化関数だと考えられています。