基本的にはmanualに書いてある通りです。
受け取った文字をbase64でエンコードして、暗号化して、暗号化した文字もbase64でエンコードしています。
復号化の際も同じ感じです。
暗号・復号処理に関していつものことなのが、これがAESでうまく暗号化されているかはよく分からず、復号化がうまくいっているので良しとしています。
static public function Encrypt($value){ //Base64でエンコードする $encodedValue = base64_encode($value); /* 暗号モジュールをオープンします */ $td = self::getCryptModule(); /* データを暗号化します */ $encrypted = mcrypt_generic($td, $encodedValue); //暗号化された文字をBase64でエンコードする $encodedEncryptValue = base64_encode($encrypted); /* 暗号化ハンドラを終了します */ mcrypt_generic_deinit($td); /* モジュールを閉じます */ mcrypt_module_close($td); return $encodedEncryptValue; } static public function Decrypt($value){ //Base64デコードする $decodedValue = base64_decode($value); /* 暗号モジュールをオープンします */ $td = self::getCryptModule(); /* 暗号化された文字列を復号します */ $decrypted = mdecrypt_generic($td, $decodedValue); /* 復号ハンドルを終了し、モジュールを閉じます */ mcrypt_generic_deinit($td); mcrypt_module_close($td); //Base64デコードする $decodedDecryptValue = base64_decode($decrypted); return $decodedDecryptValue; } static private function getCryptModule() { /* 暗号モジュールをオープンします */ //$td = mcrypt_module_open('tripledes', '', MCRYPT_MODE_ECB, ''); $td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_ECB, ''); /* IV を作成し、キー長を定義します。Windows では、かわりに * MCRYPT_RAND を使用します */ $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size($td); /* キーを作成します */ $key = substr(md5('very secret key'), 0, $ks); /* 復号用の暗号モジュールを初期化します */ mcrypt_generic_init($td, $key, $iv); return $td; }
0 件のコメント:
コメントを投稿