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