PHP+MYSQLのメモ書き2

DBのデータを暗号化して保存しときたい時は、AES_ENCRYPT(), AES_DECRYPT()関数が使えたらしい。

ただこの関数は結果をバイナリ型で返すのでHEX(), UNHEX()関数と組み合わせるのがセオリーぽい。

/* EXAMPLE */

$DB_TABLE : テーブル名
$DATA : データ
$KEY : 暗号化キー
FIELD : フィールド名

Encode:
$sql = "INSERT INTO ${DB_TABLE} (FIELD) VALUES ( HEX( AES_ENCRYPT('${DATA}', '${KEY}') ) )";

Decode:
$sql = "SELECT AES_DECRYPT(UNHEX(FIELD), '${KEY}') FROM ${DB_TABLE}";

日本語もいけた。