tanaka's Programming Memo

プログラミングについてのメモ。

MySQLでの暗号化データの読み書き

データ

  • 暗号化するデータは「tinyblob(255文字)」か「blob(6万文字)」などのバイナリ型を利用。
  • 記録バイト数は、暗号化前のバイト数+1を16の倍数に切り上げたバイト数。

暗号化処理

AES_ENCRYPT(データ,パスワード)を利用する。

SQLでのデータ登録例
insert into テーブル名 (data1,data2) values (AES_ENCRYPT('データ1','passwd'),AES_ENCRYPT('データ2','passwd'))
PHPからデータを登録する例
$conn = mysql_connect(SERVER_NAME,SERVER_USER,SERVER_PASSWORD);
if ($conn === FALSAE) die("connect error.");

$res = mysql_select_db(DATABASE_NAME);
if ($res === FALSE) die("select db error.");

$query  = "insert into テーブル名 (data1,data2) values (";
$query .= " AES_ENCRYPT('データ1','passwd')";
$query .= ",AES_ENCRYPT('データ2','passwd'))";
$res = mysql_query($query);
if ($res === FALSE) die("insert error.");

mysql_close($conn);
SQLでのデータ更新
update テーブル名 set data1=AES_ENCRYPT('データ1','passwd'),data2=AES_ENCRYPT('データ2','passwd')

複合化処理

AES_DECRYPT(データ名,パスワード)を利用する。

SQLでのデータ抽出例
select AES_DECRYPT(data1,'passwd'),AES_DECRYPT(data2,'passwd') from テーブル名