ホームページ >バックエンド開発 >PHPチュートリアル >mcrypt を有効にした暗号化と復号化プロセスの詳細な分析_PHP チュートリアル
Mcrypt 拡張ライブラリは、暗号化および復号化機能を実現できます。つまり、平文を暗号化するだけでなく、暗号文を復元することもできます。
1. PHP 暗号化拡張ライブラリ Mcrypt のインストール
標準的な PHP インストール プロセスでは Mrcypt はインストールされませんが、PHP のメイン ディレクトリには libmcrypt.dll および libmhash.dll ファイルが含まれています (libmhash.dll は Mhash 拡張ライブラリです。ここで一緒にインストールされます)。まず、これら 2 つのファイルをシステム ディレクトリ windowssystem32 にコピーし、PHP.ini ファイル内で Ctrl+F ショートカット キーを押して検索ボックスを表示し、extension=php-mcrypt.dll と extension=php_mhash.dll を見つけます。ステートメントを作成し、その前の「;」を削除して、最後に保存して Apache サーバーを再起動して有効にします。
2. PHP 暗号化拡張ライブラリ Mcrypt のアルゴリズムと暗号化モード
Mcrypt ライブラリは 20 を超える暗号化アルゴリズムと 8 つの暗号化モードをサポートしており、関数 mcrypt_list_algorithms() および mcrypt_list_modes() によって表示できます。 :
Mcrypt は次のアルゴリズムをサポートしています: cast-128 gost rijndael-128 twofish arcfour Cast-256 loki97 rijndael-192 searplus wake bullfish-compat des rijndael-256 serpent xtea bullfish enigma rc2 Triples
Mcrypt でサポートされている暗号化モードは次のとおりです: cbc cfb ctr ecb ncfb nofb ofb stream
これらのアルゴリズムとモードは、次の Mcrypt アプリケーションの例に示すように、アプリケーション内で定数で表す必要があります。
DES アルゴリズムは MCRYPT_DES で表されます。 MCRYPT_MODE_ECB による;
3. PHP 暗号化拡張ライブラリ Mcrypt アプリケーション
まず Mcrypt のワークフローを理解するために例を見てから、いくつかのプロセスで使用される関数を見てみましょう:
コードをコピーします
$str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$mode,$iv);
実行結果:
関数 mcrypt_get_iv_size($cipher,$modes) は、初期化ベクトルのサイズを返します。パラメーター cipher と mode は、それぞれアルゴリズムと暗号化モードを参照します。
<3>
暗号化関数 $str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); この関数の 5 つのパラメータは次のとおりです: cipher—暗号化アルゴリズム、key—key 、data(str)—暗号化する必要があるデータ、mode—アルゴリズムモード、iv—初期化ベクトル<4>
復号化関数 mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); この関数と暗号化関数のパラメータはほぼ同じです。つまり、データが異なります。データを復号化する必要があるのは、元のデータ $str ではなく、データ $str_encrypt です。//マニュアルに書く:
コードをコピーする
$private_key = "28e336ac6c9423d946ba02d19c6a2632";
//リクエストの暗号化$enc_request =base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $private_key, json_encode($request_params), MCRYPT_MODE_ECB));
echo "CRYPT:".$enc_request."
";
$params = json_decode(trim(mcrypt_decrypt( MCRYPT_RIJNDAEL_256, $private_key,base64_decode($enc_request), MCRYPT_MODE_ECB )),true);
echo "ENCRYPT:
";
var_dump($params);