PHP Mcryptで暗号化、復号化

mcryptを使った文字列の暗号化、復号化

暗号化

PHP

// 暗号モジュールをオープン、アルゴリズム・モードを設定 $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); // IV を作成し、キー長を定義 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM); $ks = mcrypt_enc_get_key_size($td); // キーを作成 $str = 'foo'; $key = substr(md5($str), 0, $ks); // 暗号化処理を初期化 mcrypt_generic_init($td, $key, $iv); // データを暗号化 $data = 'リンゴ、バナナ、ネコ、イヌ'; $encrypted = mcrypt_generic($td, $data); // 暗号化ハンドラを終了 mcrypt_generic_deinit($td); // モジュールクローズ mcrypt_module_close($td);

複合化

PHP

// 暗号モジュールをオープン $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); // 暗号化処理を初期化 // $keyと$ivは暗号化の際に作成された値をセット mcrypt_generic_init($td, $key, $iv); // 暗号化された文字列を復号化 // $decryptedには リンゴ、バナナ、ネコ、イヌ の文字列 $decrypted = mdecrypt_generic($td, $encrypted); // 暗号化ハンドラを終了 mcrypt_generic_deinit($td); // モジュールクローズ mcrypt_module_close($td);

PHP

// サポートアルゴリズム一覧 $algorithms = mcrypt_list_algorithms(); print_r($algorithms); /* Array ( [0] => cast-128 [1] => gost [2] => rijndael-128 [3] => twofish [4] => cast-256 [5] => loki97 [6] => rijndael-192 [7] => saferplus [8] => wake [9] => blowfish-compat [10] => des [11] => rijndael-256 [12] => serpent [13] => xtea [14] => blowfish [15] => enigma [16] => rc2 [17] => tripledes [18] => arcfour ) */ // サポート暗号利用モード一覧 $modes = mcrypt_list_modes(); print_r($modes); /* Array ( [0] => cbc [1] => cfb [2] => ctr [3] => ecb [4] => ncfb [5] => nofb [6] => ofb [7] => stream ) */

Mcryptは7.1から非推奨、7.2で廃止。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について