MySQL関数リファレンス

トリプルDESで暗号化する (DES_ENCRYPT)

スポンサードリンク
書式
DES_ENCRYPT( 暗号化する文字列 )
DES_ENCRYPT( 暗号化する文字列, キー番号 )
DES_ENCRYPT( 暗号化する文字列, キー文字列 )

DES_ENCRYPT関数を使用することで、文字列をトリプルDESで暗号化することができます。

■注意■
このDES_ENCRYPT関数を使用するためにはMySQLのSSL機能を有効にする必要があります。
しかし私が使用している環境ではSSL機能が有効ではないため、当関数の機能の検証は行っていません。 そのため、この記事は参考程度の情報として読んでください。
尚MySQL4.0.2以降では、トリプルDESより暗号の安全性が高く、かつSSL機能が無効でも使用できる暗号化関数としてAES_ENCRYPT関数とAES_DECRYPT関数があります。


トリプルDES暗号化のキーの指定方法は3通りあります。

1.des-key-fileファイル内の最初のキーを使用する方法。
2.des-key-fileファイル内の任意のキーを使用する方法。
3.第二引数で直接キーの文字列を指定する方法。

1および2のようにdes-key-fileを使用する場合は、MySQLサーバの起動オプションで「--des-key-file=filename」を指定し、キーファイルのロケーションを指定しておく必要があります。
第二引数を省略した場合は、キーファイルで定義した1番目のキーが使用され、キー番号を指定した場合はその番号に該当するキーが使用されます。
ちなみにdes-key-fileの書式は以下の通りです。
キー番号 キー文字列 キー番号 キー文字列 
キー番号は半角数字の0-9の間で指定する必要があります。
キー番号はどのような順番でも構いません。
キー番号とキー文字列の間には少なくとも1文字の半角スペースが必要です。

第二引数をキー番号ではなく、キー文字列とした場合は、そのキー文字列で暗号化されます。
DES_ENCRYPT関数で暗号化された値はDES_DECRYPT関数で復号化できます。

例1(SSL機能が無効な場合)
mysql> -- MySQLサーバの状態を確認。SSL機能は無効(Not in use)。
mysql> status
--------------
mysql  Ver 14.7 Distrib 4.1.19, for Win32 (ia32)
Connection id:          1
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         4.1.19-community-nt
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    sjis
Db     characterset:    sjis
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3306
Uptime:                 27 min 30 sec

Threads: 1  Questions: 3  Slow queries: 0  Opens: 11  Flush tables: 1  
Open tables: 5  Queries per second avg: 0.002
--------------

mysql> -- SSL機能が向こうであるためDES_ENCRYPT関数は機能しない
mysql> SELECT DES_ENCRYPT( '1234567890123456', '1234567890123456' );
+-------------------------------------------------------+
| DES_ENCRYPT( '1234567890123456', '1234567890123456' ) |
+-------------------------------------------------------+
| NULL                                                  |
+-------------------------------------------------------+
1 row in set, 1 warning (0.01 sec)
スポンサードリンク
Dではじまる MySQL の関数 / 暗号化関数

暗号化関数

スポンサードリンク

Dではじまる MySQL の関数

DATABASE 接続中のデータベースを確認する
DATE 日時から日付を取り出す
DAY 年月日から日を取り出す
DAYOFMONTH 年月日から日を取り出す
DAYOFWEEK 日付の曜日を調べる
DAYOFYEAR 日付がその年の1月1日から何日目かを調べる
DECODE 復号化パスワードを指定して復号化する
DEGREES ラジアンを度に変換する
DES_DECRYPT トリプルDESで復号化する
DES_ENCRYPT トリプルDESで暗号化する