ここではPHPの暗号化、複合化について解説していきます。
データベースに暗号化のパスワードを保存しておき複合化で暗号化した前の状態に複合化させます。
<?php /** 暗号キー **/ define('KEY', 'kbkb kja ihkhb gtev555yihj8sj gdigyjeu 8nkfd'); define('IV', '9Aih3ysn0Ty5po90i7M3xUqXwlhs2g6VGJ8LAEjita5='); /** * 暗号化 * @param type $data * @return string */ function getEncrypt($data) { $resource = mcrypt_module_open('rijndael-256', '', 'ofb', ''); $iv = substr(base64_decode(str_rot13(IV)), 0, mcrypt_enc_get_iv_size($resource)); $ks = mcrypt_enc_get_key_size($resource); $key = substr(md5(KEY), 0, $ks); mcrypt_generic_init($resource, $key, $iv); $encrypt = mcrypt_generic($resource, $data); mcrypt_generic_deinit($resource); mcrypt_module_close($resource); return base64_encode($encrypt); } /** * 複合化 * @param type $data * @return string */ function getDecrypt($data) { $resource = mcrypt_module_open('rijndael-256', '', 'ofb', ''); $iv = substr(base64_decode(str_rot13(IV)), 0, mcrypt_enc_get_iv_size($resource)); $ks = mcrypt_enc_get_key_size($resource); $key = substr(md5(KEY), 0, $ks); mcrypt_generic_init($resource, $key, $iv); $decrypt = mdecrypt_generic($resource, base64_decode($data)); mcrypt_generic_deinit($resource); mcrypt_module_close($resource); return $decrypt; }
解説
KEYとIVを定数として定義して変更しなければ常に同じ暗号化、複合化ができます。
パスワードを変更する仕様がきたときにどうぞ。