DES_ENCRYPT(str[,{key_num|key_str}])

DES_ENCRYPT(str[,{key_num|key_str}])

Triple-DES アルゴリズムを使用して、与えられたキーでストリングを暗号化します。

この関数は、MySQL が SSL サポートで設定されている場合のみ作動しますのでご注意ください。詳細は 項4.8.7. 「接続安全」 を参照してください。

使用する暗号化キーは、与えられていれば、DES_ENCRYPT() への 2 番目の引数に基づいて選択されます :

引数 解説
引数なし DES キー ファイルの最初のキーが使用される。
key_num DES キー ファイルからの与えられたキー番号 ( 0-9 ) が使用される。
key_str 与えられたキー ストリングが str の暗号化に使用される。

キー ファイルは --des-key-file サーバ オプションで特定できます。

戻されるストリングは、最初の文字が CHAR(128 | key_num) であるバイナリ ストリングです。エラーが起きた場合、DES_ENCRYPT()NULL を戻します。

暗号化されたキーが分かりやすいように、128 が加えられます。ストリング キーを使用する場合は、key_num は 127 です。

結果のストリングの長さは次の方式によって提示されます :

new_len = orig_len + (8 - (orig_len % 8)) + 1

DES キー ファイルの各ラインは次のフォーマットを含みます :

key_num des_key_str

key_num 値は、0 から 9 の範囲の数字でなければなりません。ファイル内のラインの順は特定されていません。des_key_str はメッセージの暗号化に使用されるストリングです。数字とキーの間には、少なくともひとつはスペースが入ります。最初のキーは、DES_ENCRYPT() へのキー引数を指定しなかった場合に使用されるデフォルトのキーです。

MySQL に、キー ファイルからの新しいキー値を、FLUSH DES_KEY_FILE 文で読み込むよう指示することができます。これには RELOAD 権限が必須です。

デフォルト キーのセットを持つことの利点のひとつは、エンドユーザにこれらの値を復号化する権利を与えることなく、既存の暗号化されたカラム値を確認する方法をアプリケーションに与えられることです。

mysql> SELECT customer_address FROM customer_table 
     > WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');