ホームページ  >  記事  >  バックエンド開発  >  PHP コード暗号化のいくつかの方法の紹介

PHP コード暗号化のいくつかの方法の紹介

尚
転載
2020-03-13 09:42:455496ブラウズ

PHP コード暗号化のいくつかの方法の紹介

PHP コードを保護する方法:

コード難読化暗号化

実際の暗号化は考慮されず、特定の実装は考慮されません。アイデアは、base64 でコードを暗号化し、base64 の文字列に対して文字列マッピングを実行し (辞書の難読化をランダムに生成する)、その後 eval でこのメソッドを実行します。このメソッドは解読して復元できます。

はコードを次のように表します。

<?php

 function RandAbc($length = "") { // 返回随机字符串 
  $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
  return str_shuffle($str); 
 } 

 $filename = &#39;index.php&#39;; //要加密的文件 
 $T_k1 = RandAbc(); //随机密匙1 
 $T_k2 = RandAbc(); //随机密匙2 
 $vstr = file_get_contents($filename); 
 $v1 = base64_encode($vstr); 
 $c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。 
 $c = $T_k1.$T_k2.$c; 
 $q1 = "O00O0O"; 
 $q2 = "O0O000"; 
 $q3 = "O0OO00"; 
 $q4 = "OO0O00"; 
 $q5 = "OO0000"; 
 $q6 = "O00OO0"; 
 $s = &#39;$&#39;.$q6.&#39;=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$&#39;.$q1.&#39;=$&#39;.$q6.&#39;{3}.$&#39;.$q6.&#39;{6}.$&#39;.$q6.&#39;{33}.$&#39;.$q6.&#39;{30};$&#39;.$q3.&#39;=$&#39;.$q6.&#39;{33}.$&#39;.$q6.&#39;{10}.$&#39;.$q6.&#39;{24}.$&#39;.$q6.&#39;{10}.$&#39;.$q6.&#39;{24};$&#39;.$q4.&#39;=$&#39;.$q3.&#39;{0}.$&#39;.$q6.&#39;{18}.$&#39;.$q6.&#39;{3}.$&#39;.$q3.&#39;{0}.$&#39;.$q3.&#39;{1}.$&#39;.$q6.&#39;{24};$&#39;.$q5.&#39;=$&#39;.$q6.&#39;{7}.$&#39;.$q6.&#39;{13};$&#39;.$q1.&#39;.=$&#39;.$q6.&#39;{22}.$&#39;.$q6.&#39;{36}.$&#39;.$q6.&#39;{29}.$&#39;.$q6.&#39;{26}.$&#39;.$q6.&#39;{30}.$&#39;.$q6.&#39;{32}.$&#39;.$q6.&#39;{35}.$&#39;.$q6.&#39;{26}.$&#39;.$q6.&#39;{30};eval($&#39;.$q1.&#39;("&#39;.base64_encode(&#39;$&#39;.$q2.&#39;="&#39;.$c.&#39;";eval(\&#39;?>\&#39;.$&#39;.$q1.&#39;($&#39;.$q3.&#39;($&#39;.$q4.&#39;($&#39;.$q2.&#39;,$&#39;.$q5.&#39;*2),$&#39;.$q4.&#39;($&#39;.$q2.&#39;,$&#39;.$q5.&#39;,$&#39;.$q5.&#39;),$&#39;.$q4.&#39;($&#39;.$q2.&#39;,0,$&#39;.$q5.&#39;))));&#39;).&#39;"));&#39;; 

 $s = &#39;<?php &#39;."\n".$s."\n".&#39; ?>&#39;; 
 //echo $s; 
 // 生成 加密后的PHP文件 
 $fpp1 = fopen(&#39;temp_&#39;.$filename, &#39;w&#39;); 
 fwrite($fpp1, $s) or die(&#39;写文件错误&#39;); 

 ?>

文字化けを混乱させる

コード難読化変数にも 1 の原則と似たものがいくつかありますが、文字列を ASCII 127 の間の非人間文字に変更します。と 255 、編集者が理解できない文字がありますが、結果は 100% 解読でき、復元できるのは時間の問題です。

オペコードの発行

コードを配布するのではなく、最初に PHP コードをプリコンパイルしてからオペコードを配布してください。PHP7 以降、opcache はこれを深く統合します。PHP7 以降は、この方法を使用してソース コードを保護できますが、オペコードによって逆コンパイルされ、クラックされます。

難読化と暗号化を使用して PHP 拡張機能を作成します

難読化と暗号化を使用して PHP 拡張機能を作成しますが、独自の暗号化アルゴリズムを作成しない限り、オープンソースの PHP 拡張機能はクラックされてしまいます。 PHP コードを暗号化し、C 音声を使用して拡張クローズド ソースを作成します。他の人はあなたの暗号化とクラッキングのアイデアを知らないため、クラッキングされる可能性は非常に低いです。

Swoole コンパイラー

swoole によって生成されるものは、生成されたオペコードを取得し、暗号化を難読化するものです。これは素晴らしいものです。これを実行したい場合は、 zend エンジンが難読化および暗号化されたオペコードを認識することは不可能であるため、実際には zend を書き直す必要があり、サポートする zend エンジンも変更する必要があります。

関連する推奨事項:

PHP ビデオ チュートリアル: https://www.php.cn/course/list/29/type/2.html

以上がPHP コード暗号化のいくつかの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。