PHPで可逆暗号化する
MySQLを確認したついでにPHPでの可逆暗号化も調べました。
Mcrypt暗号化関数で行うようで、いろいろ試して、いざ本番サーバで動かすと「Call to undefined function mcrypt_get_iv_size() 〜」と、エラーが…。PHPINFOで確認したらMcryptが使えない模様…。
ということで別の方法を探したらPEAR :: Crypt_Blowfishであれば、Mcryptが使えなくても利用できるようなので、さっそく試したところ動作しました。
require_once ("Crypt/Blowfish.php"); $key = "keyword"; $data = "encodewords"; //暗号化 $blowfish = new Crypt_Blowfish($key); $encode_data = $blowfish->encrypt($data); //暗号化したデータはバイナリなのでbase64_encodeでテキスト化 echo base64_encode($encode_data); //復号化 $blowfish = new Crypt_Blowfish($key); $decode_data = $blowfish->decrypt($data); //rtrimで「\0」を取り除く echo rtrim($decode_data, "\0");
注意点は暗号化したデータを表示させるときは「base64_encode」を通す、復号化したときはお尻に「\0(ヌル文字)」がついている場合があるので取り除く、こと。
暗号化についてはもうちょっと理解できてない部分があるけど、ひとまずはここまで。
PHP: Mcrypt – Manual
PEAR :: Package :: Crypt_Blowfish
2007-11-08 – Do You PHP はてな「PHPで暗号化・復号あれこれ」の続き