ホームページ バックエンド開発 PHPチュートリアル 怎样给PHP源代码加密?PHP二进制加密与解密的解决办法_php实例

怎样给PHP源代码加密?PHP二进制加密与解密的解决办法_php实例

Jun 07, 2016 pm 05:24 PM
PHP暗号化 PHPの復号化

分享2种PHP的源码加密方式,此加密方法支持任意PHP版。

注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可。

复制代码 代码如下:

 function encode_file_contents($filename) { 
     $type=strtolower(substr(strrchr($filename,'.'),1)); 
     if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码 
         $contents = file_get_contents($filename); // 判断文件是否已经被编码处理 
         $contents = php_strip_whitespace($filename);  

         // 去除PHP头部和尾部标识 
         $headerPos = strpos($contents,'         $footerPos = strrpos($contents,'?>'); 
         $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos); 
         $encode = base64_encode(gzdeflate($contents)); // 开始编码 
         $encode = '";  

         return file_put_contents($filename, $encode); 
     } 
     return false; 
 }  

 //调用函数 
 $filename = 'dam.php'; 
 encode_file_contents($filename); 
 echo "OK,加密完成!"
 ?>

加密方式2:
复制代码 代码如下:


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

 $filename = 'index.php'; //要加密的文件 
 $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 = '$'.$q6.'=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");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));'; 

 $s = ''; 
 //echo $s; 
 // 生成 加密后的PHP文件 
 $fpp1 = fopen('temp_'.$filename, 'w'); 
 fwrite($fpp1, $s) or die('写文件错误'); 

 ?>

其实,PHP加密源码方式有很多,譬如,免费的微盾PHP加密,还有 www.phpjm.net 搞的在线加密,只是phpjm更复杂点而已。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

另外,分享一个 PHP类,它能对 文本的内容进行 二进制加密 与 解密,代码如下:
复制代码 代码如下:


 class text_auth 
 { 
     var $n_iter; 

     function text_auth() 
     { 
         $this->setIter(32); 
     } 

     function setIter($n_iter) 
     { 
         $this->n_iter = $n_iter; 
     } 

     function getIter() 
     { 
         return $this->n_iter; 
     } 

     function encrypt($data, $key) 
     { 
         $n = $this->_resize($data, 4); 

         $data_long[0]   = $n; 
         $n_data_long    = $this->_str2long(1, $data, $data_long); 

         $n = count($data_long); 
         if (($n & 1) == 1) { 
             $data_long[$n] = chr(0); 
             $n_data_long++; 
         } 

         $this->_resize($key, 16, true); 
         if ( '' == $key ) 
             $key = '0000000000000000'; 

         $n_key_long = $this->_str2long(0, $key, $key_long); 

         $enc_data   = ''; 
         $w          = array(0, 0); 
         $j          = 0; 
         $k          = array(0, 0, 0, 0); 
         for ($i = 0; $i              if ($j + 4                  $k[0] = $key_long[$j]; 
                 $k[1] = $key_long[$j + 1]; 
                 $k[2] = $key_long[$j + 2]; 
                 $k[3] = $key_long[$j + 3]; 
             } else { 
                 $k[0] = $key_long[$j % $n_key_long]; 
                 $k[1] = $key_long[($j + 1) % $n_key_long]; 
                 $k[2] = $key_long[($j + 2) % $n_key_long]; 
                 $k[3] = $key_long[($j + 3) % $n_key_long]; 
             } 
             $j = ($j + 4) % $n_key_long; 

             $this->_encipherLong($data_long[$i], $data_long[++$i], $w, $k); 

             $enc_data .= $this->_long2str($w[0]); 
             $enc_data .= $this->_long2str($w[1]); 
         } 

         return $enc_data; 
     } 

     function decrypt($enc_data, $key) 
     { 
         $n_enc_data_long = $this->_str2long(0, $enc_data, $enc_data_long); 

         $this->_resize($key, 16, true); 
         if ( '' == $key ) 
             $key = '0000000000000000'; 

         $n_key_long = $this->_str2long(0, $key, $key_long); 

         $data   = ''; 
         $w      = array(0, 0); 
         $j      = 0; 
         $len    = 0; 
         $k      = array(0, 0, 0, 0); 
         $pos    = 0; 

         for ($i = 0; $i              if ($j + 4                  $k[0] = $key_long[$j]; 
                 $k[1] = $key_long[$j + 1]; 
                 $k[2] = $key_long[$j + 2]; 
                 $k[3] = $key_long[$j + 3]; 
             } else { 
                 $k[0] = $key_long[$j % $n_key_long]; 
                 $k[1] = $key_long[($j + 1) % $n_key_long]; 
                 $k[2] = $key_long[($j + 2) % $n_key_long]; 
                 $k[3] = $key_long[($j + 3) % $n_key_long]; 
             } 
             $j = ($j + 4) % $n_key_long; 

             $this->_decipherLong($enc_data_long[$i], $enc_data_long[$i + 1], $w, $k); 

             if (0 == $i) { 
                 $len = $w[0]; 
                 if (4                      $data .= $this->_long2str($w[1]); 
                 } else { 
                     $data .= substr($this->_long2str($w[1]), 0, $len % 4); 
                 } 
             } else { 
                 $pos = ($i - 1) * 4; 
                 if ($pos + 4                      $data .= $this->_long2str($w[0]); 

                     if ($pos + 8                          $data .= $this->_long2str($w[1]); 
                     } elseif ($pos + 4                          $data .= substr($this->_long2str($w[1]), 0, $len % 4); 
                     } 
                 } else { 
                     $data .= substr($this->_long2str($w[0]), 0, $len % 4); 
                 } 
             } 
         } 
         return $data; 
     } 

     function _encipherLong($y, $z, &$w, &$k) 
     { 
         $sum    = (integer) 0; 
         $delta  = 0x9E3779B9; 
         $n      = (integer) $this->n_iter; 

         while ($n-- > 0) { 
             $y      = $this->_add($y, 
                                   $this->_add($z _rshift($z, 5), $z) ^ 
                                     $this->_add($sum, $k[$sum & 3])); 
             $sum    = $this->_add($sum, $delta); 
             $z      = $this->_add($z, 
                                   $this->_add($y _rshift($y, 5), $y) ^ 
                                     $this->_add($sum, $k[$this->_rshift($sum, 11) & 3])); 
         } 

         $w[0] = $y; 
         $w[1] = $z; 
     } 

     function _decipherLong($y, $z, &$w, &$k) 
     { 
         $sum    = 0xC6EF3720; 
         $delta  = 0x9E3779B9; 
         $n      = (integer) $this->n_iter; 

         while ($n-- > 0) { 
             $z      = $this->_add($z, 
                                   -($this->_add($y _rshift($y, 5), $y) ^ 
                                         $this->_add($sum, $k[$this->_rshift($sum, 11) & 3]))); 
             $sum    = $this->_add($sum, -$delta); 
             $y      = $this->_add($y, 
                                   -($this->_add($z _rshift($z, 5), $z) ^ 
                                         $this->_add($sum, $k[$sum & 3]))); 
         } 

         $w[0] = $y; 
         $w[1] = $z; 
     } 

     function _resize(&$data, $size, $nonull = false) 
     { 
         $n      = strlen($data); 
         $nmod   = $n % $size; 
         if ( 0 == $nmod ) 
             $nmod = $size; 

         if ($nmod > 0) { 
             if ($nonull) { 
                 for ($i = $n; $i                      $data[$i] = $data[$i % $n]; 
                 } 
             } else { 
                 for ($i = $n; $i                      $data[$i] = chr(0); 
                 } 
             } 
         } 
         return $n; 
     } 

     function _hex2bin($str) 
     { 
         $len = strlen($str); 
         return pack('H' . $len, $str); 
     } 

     function _str2long($start, &$data, &$data_long) 
     { 
         $n = strlen($data); 

         $tmp    = unpack('N*', $data); 
         $j      = $start; 

         foreach ($tmp as $value) 
             $data_long[$j++] = $value; 

         return $j; 
     } 

     function _long2str($l) 
     { 
         return pack('N', $l); 
     } 

     function _rshift($integer, $n) 
     { 
         if (0xffffffff $integer) { 
             $integer = fmod($integer, 0xffffffff + 1); 
         } 

         if (0x7fffffff              $integer -= 0xffffffff + 1.0; 
         } elseif (-0x80000000 > $integer) { 
             $integer += 0xffffffff + 1.0; 
         } 

         if (0 > $integer) { 
             $integer &= 0x7fffffff; 
             $integer >>= $n; 
             $integer |= 1          } else { 
             $integer >>= $n; 
         } 

         return $integer; 
     } 

     function _add($i1, $i2) 
     { 
         $result = 0.0; 

         foreach (func_get_args() as $value) { 
             if (0.0 > $value) { 
                 $value -= 1.0 + 0xffffffff; 
             } 

             $result += $value; 
         } 

         if (0xffffffff $result) { 
             $result = fmod($result, 0xffffffff + 1); 
         } 

         if (0x7fffffff              $result -= 0xffffffff + 1.0; 
         } elseif (-0x80000000 > $result) { 
             $result += 0xffffffff + 1.0; 
         } 
         return $result; 
     } 
 } 
 ?>
使用方法参考如下:
// 加密过程
view sourceprint?
 $text_file = S_ROOT . './456.php'; 
 $str = @file_get_contents($text_file); 

 require_once S_ROOT . "./text_auth.php"; 
 $text_auth = new text_auth(64); 

 $str = $text_auth->encrypt($str, "qianyunlai.com"); 

 $filename = S_ROOT . './789.php'; // 加密后的文本为二进制,普通的文本编辑器无法正常查看 
 file_put_contents($filename, $str);
// 解密过程
view sourceprint
?01 $text_file = S_ROOT . './789.php'; 
 $str = @file_get_contents($text_file); 

 require_once S_ROOT . "./text_auth.php"; 
 $text_auth = new text_auth(64); 

 $str = $text_auth->decrypt($str, "qianyunlai.com"); 

 $filename = S_ROOT . './456.php'; 
 file_put_contents($filename, $str);

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP の暗号化と復号化の方法と一般的な問題の解決策 PHP の暗号化と復号化の方法と一般的な問題の解決策 Jun 09, 2023 pm 01:50 PM

PHP は、Web アプリケーション開発で広く使用されている人気のあるサーバー側プログラミング言語です。実際のアプリケーションでは、PHP の暗号化と復号化は非常に一般的な操作です。この記事では、PHP での一般的な暗号化と復号化の方法、および一般的な問題の解決策を紹介します。 1. 暗号化方式 1. 対称暗号化方式(SymmetricCryptography) 対称暗号化方式は、暗号化技術の中で最も広く使われている方式です。この方法では、同じキーを使用してデータの暗号化と復号化を行います。 PHP で一般的に使用される対称暗号化

PHP 配列を使用したデータの暗号化と復号化の方法と技術 PHP 配列を使用したデータの暗号化と復号化の方法と技術 Jul 16, 2023 pm 04:02 PM

PHP 配列を使用したデータの暗号化と復号化の方法とテクニック 概要: データの暗号化は、情報セキュリティにおいて重要な役割を果たします。この記事では、機密情報のセキュリティを保護するために、PHP 配列を使用してデータの暗号化と復号化を実装する方法とテクニックを紹介します。はじめに 現代社会において、ネットワークセキュリティの問題はますます注目を集めています。機密情報のセキュリティを保護するには、データ暗号化が一般的な方法です。 PHP 配列は、データの保存と操作に使用できる強力で柔軟なデータ構造です。機密データを PHP 配列に保存することによって

PHP がデータの暗号化、復号化、送信を実装してデータのセキュリティを確保する方法 PHP がデータの暗号化、復号化、送信を実装してデータのセキュリティを確保する方法 Jun 27, 2023 am 10:44 AM

ネットワーク技術の継続的な発展に伴い、データセキュリティへの注目がますます高まっています。この情報化時代において、広く使用されているプログラミング言語である PHP も、データ セキュリティの問題に直面しています。この記事では、PHP を使用してデータの暗号化、復号化、送信を実装し、データのセキュリティを確保する方法を紹介します。 1. データ暗号化 データ暗号化とは、元のデータを処理し、一見ランダムな文字列に変換して元のデータを保護するテクノロジーを指します。暗号化は一方向暗号化と対称暗号化に分けられます。一方向暗号化とは、暗号化操作のみを実行できることを意味します

PHP 暗号化テクノロジーを使用して登録プロセスを保護し、登録詐欺を防ぐ方法 PHP 暗号化テクノロジーを使用して登録プロセスを保護し、登録詐欺を防ぐ方法 Aug 19, 2023 pm 12:05 PM

PHP 暗号化テクノロジを使用して登録プロセスを保護し、登録詐欺を防止する方法 今日のインターネット時代において、登録システムはあらゆる Web サイトの基本機能となっています。しかし、インターネットの開放性と自由​​なアクセスにより、一部の犯罪者は自動スクリプトを使用して悪意のある登録を実行し、Web サイトの通常の動作に問題を引き起こすことがよくあります。したがって、登録プロセスを保護し、登録詐欺を防止することが非常に重要な課題となっています。登録プロセスを保護し、登録詐欺を防止するために、PHP 暗号化テクノロジを使用して登録システムのセキュリティを強化できます。下

PHP での暗号化と復号化 PHP での暗号化と復号化 May 26, 2023 pm 12:51 PM

Web 開発において、セキュリティは常に最も重要な問題の 1 つです。キーの漏洩、データの改ざん、盗難などのリスクが常に存在するため、データのセキュリティを保護することが特に重要です。データのセキュリティを確保するために、通常、データ処理には暗号化と復号化が使用されます。 PHP では、暗号化と復号化も非常に重要な部分です。 1. PHP の暗号化方式 PHP にはさまざまな暗号化方式がありますが、ここではよく使われる暗号化方式をいくつか紹介します。 md5 暗号化 md5 は、一般的に使用される暗号化方式です。それ

PHPセキュリティ機密データの暗号化および復号化技術の分析 PHPセキュリティ機密データの暗号化および復号化技術の分析 Jun 30, 2023 pm 02:01 PM

PHP におけるセキュリティ重要データの暗号化および復号化テクノロジの分析 インターネットの発展に伴い、データのセキュリティが重要な問題になっています。 Web サイト開発者にとって、ユーザーの機密データを保護する方法は特に重要です。 PHP では、さまざまな暗号化および復号化テクノロジを使用して機密データを保護できます。この記事では、PHP におけるセキュリティの機密データの暗号化および復号化テクノロジについて詳しく分析します。 1. 暗号化の基本原理 暗号化とは、平文を暗号文に変換することであり、鍵を持っている人だけが暗号文を復号して平文に戻すことができます。 PHP における一般的な暗号化方式

PHP の暗号化および復号化テクノロジーと一般的な問題の解決策 PHP の暗号化および復号化テクノロジーと一般的な問題の解決策 Jun 09, 2023 pm 12:36 PM

ネットワーク技術の普及に伴い、ネットワークのセキュリティ問題への関心が高まっており、暗号化・復号化技術にも大きな注目が集まっています。 PHP プログラミングでは、暗号化と復号化のテクノロジは非常に重要な部分であり、データのセキュリティを確保し、データの盗難や悪意のある攻撃を防ぐのに役立ちます。この記事では、PHP で一般的に使用される暗号化および復号化のアルゴリズムとソリューションを紹介します。 1. 暗号化および復号化技術の役割 ネットワークでは、データの通信中に、犯罪者によるデータの傍受、改ざん、盗難など、多くの危険な状況に遭遇することがよくあります。

PHP を使用してデータ送信を安全に行う方法 PHP を使用してデータ送信を安全に行う方法 Jun 25, 2023 am 10:06 AM

ネットワーク技術の継続的な発展に伴い、データ送信のセキュリティに対する要求がますます高まっている Web サイトやアプリケーションが増えています。特に機密情報を含む Web サイトやアプリケーションの場合、PHP を使用してデータ送信のセキュリティを保護する方法が重要です。この記事では、データ送信のセキュリティを保護するための PHP の方法をいくつか紹介します。 1. HTTPS プロトコルを使用する HTTPS は、データ送信のセキュリティを実現するための TLS/SSL プロトコルに基づく HTTP プロトコルです。 HTTPS プロトコルを使用すると、クライアントとサーバー間の情報送信が確実になります。

See all articles