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_numdes_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');