ここでは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を定数として定義して変更しなければ常に同じ暗号化、複合化ができます。
パスワードを変更する仕様がきたときにどうぞ。
