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で廃止。