その中で、Mcrypt 拡張ライブラリは暗号化と復号化機能を実現できます。つまり、平文を暗号化し、暗号文を復元できます。
1. PHP 暗号化拡張ライブラリ Mcrypt のインストール
Mrcypt は標準の PHP インストール プロセスではインストールされませんが、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 bugfish enigma rc2 Triples
Mcrypt でサポートされている暗号化モードcbc cfb ctr ecb ncfb nofb ofb stream
これらのアルゴリズムとモードは、アプリケーション内の定数で表す必要があります。次の Mcrypt アプリケーションの例のように、それらを表すプレフィックス MCRYPT_ と MCRYPT_ を追加します。は MCRYPT_DES として表されます。
ECB モードは MCRYPT_MODE_ECB として表されますまず Mcrypt のワークフローを理解するために例を見てから、いくつかの機能で使用される関数を見てみましょう。プロセス:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>$</span><span class="attribute">str</span><span> = </span><span class="attribute-value">"我的名字是?一般人我不告诉他!"</span><span>; </span></li><li class="alt"><span>//加密内容 </span></li><li><span>$</span><span class="attribute">key</span><span> = </span><span class="attribute-value">"key:111"</span><span>; </span></li><li class="alt"><span>//密钥 </span></li><li><span>$</span><span class="attribute">cipher</span><span> = </span><span class="attribute-value">MCRYPT_DES</span><span>; </span></li><li class="alt"><span>//密码类型 </span></li><li><span>$</span><span class="attribute">modes</span><span> = </span><span class="attribute-value">MCRYPT_MODE_ECB</span><span>; </span></li><li class="alt"><span>//密码模式 </span></li><li><span>$</span><span class="attribute">iv</span><span> = </span><span class="attribute-value">mcrypt_create_iv</span><span>(mcrypt_get_iv_size<br />($cipher,$modes),MCRYPT_RAND);//初始化向量 </span></li><li class="alt"><span>echo "加密明文:".$str."</span><span class="tag"><</span><span class="tag-name">p</span><span class="tag">></span><span>"; </span></span></li> <li> <span>$</span><span class="attribute">str_encrypt</span><span> = </span><span class="attribute-value">mcrypt_encrypt</span><span>($cipher,<br>$key,$str,$modes,$iv); </span> </li> <li class="alt"><span>//加密函数 </span></li> <li> <span>echo "加密密文:".$str_encrypt." </span><span class="tag"><</span><span class="tag-name">p</span><span class="tag">></span><span>"; </span> </li> <li class="alt"> <span>$</span><span class="attribute">str_decrypt</span><span> = </span><span class="attribute-value">mcrypt_decrypt</span><span>($cipher,<br>$key,$str_encrypt,$modes,$iv); </span> </li> <li><span>//解密函数 </span></li> <li class="alt"><span>echo "还原:".$str_decrypt; </span></li> <li> <span class="tag">?></span><span> </span> </li> </ol>
実行結果:
暗号化されたプレーンテキスト:私の名前は?ほとんどの人には言いません!
暗号化された暗号文: 锍ボウル?]鸴?q抦軄L 笑郺葄"簻黙復元: 私の名前は何ですか? 一般の人には教えません!
<1>例からわかるように、 PHP が使用されます。暗号化拡張ライブラリ Mcrypt がデータを暗号化および復号化する前に、最初に iv と呼ばれる初期化ベクトルが作成されます。 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);初期化ベクトルには 2 つのパラメータが必要です: size iv のサイズが指定されます。source は iv のソースであり、値 MCRYPT_RAND はシステム乱数です
関数 mcrypt_get_iv_size($cipher,$modes) は、パラメータ cipher と mode はそれぞれ、暗号化関数 $str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); を指します。この関数のパラメータは次のとおりです: cipher - 暗号化アルゴリズム、key - key 、data(str)—暗号化されるデータ、mode—アルゴリズムモード、iv—初期化ベクトル
<4> 復号化関数 mcrypt_decrypt($ cipher,$key,$str_encrypt,$modes,$iv); 関数と暗号化関数のパラメータはほぼ同じです。唯一の違いは、データが復号化されるデータであることを意味します $str_encrypt 。元のデータ $str
注: 暗号化関数と復号化関数のパラメーター cipher、key、mode は 1 対 1 に対応している必要があり、そうでない場合はデータを復元できません
www.bkjia.com