MySQLの暗号化について

考えられる方式は2つある。

その1 テーブル丸ごと暗号化
テーブル作成時に暗号化オプションを指定する。
CREATE TABLE sample_tbl (
id int(10) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100))
ENGINE=innodb ENCRYPTION=’Y’;

既存テーブルを暗号化するにはこんな感じで。
ALTER TABLE sample_tbl ENCRYPTION=’Y’;

その2 カラム単位で暗号化
テーブル全体を暗号化すると手動での保守性が大幅にダウン。パスワードなど特定のカラムだけ暗号化したデータをセットする方法。
暗号化 AES_ENCRYPT
復号化 AES_DECRYPT

CREATE TABLE sample_tbl (
id int(10) PRIMARY KEY AUTO_INCREMENT, passwd VARCHAR(100))
ENGINE=innodb;

passwdに暗号化した値をセットする。暗号化 ⇒ HEX
INSERT INTO sample_tbl(pass)
VALUES (HEX(AES_ENCRPYT(‘パスワード〇’, 任意の暗号化キー)));

復号化して取得する。UNHEX ⇒ 復号化 ⇒ UTF-8
SELECT CONVERT(AES_DECRYPT(UNHEX(passwd, 任意の暗号化キー) USING utf8)
FROM sample_tbl;

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください