php 實現php代碼的加密解密_PHP教程

來源:互聯網
上載者:User

php 實現php代碼的加密解密


php 代碼加密類,大家可以根據自己的需求進行修改,原類如下,是對之前的加密解密類的有一次修改,希望能分享給大家。本次在ubuntu下測試沒有問題,與之前的版本的區別在於,這次的版本更加的通用性。

    initialVar();              //echo "hello \n";          }          /*         *@input  $property_name,$value         *@output          *   魔法方法,對變數進行設定值;可根據需求進行處理。若直接去除if判斷表示可用設定任何屬性的值,包括不存在的屬性;        */          public function __set($property_name,$value){              //定義過的變數;              if(isset($this->$property_name)){                  $this->$property_name = $value;              }else{                  //異常處理,處理未聲明的變數賦值;可根據需求進行處理。                  throw new Exception("property does not exist");              }          }          //魔法方法 取出變數的值;          public function __get($property_name){              if(isset($this->$property_name)){                  return $this->$property_name;              }else{                  //throw new Exception("property does not exist");                  return NULL;              }          }          //取隨機排序          private function RandAbc($length=""){//隨機排序取回            $str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";            return str_shuffle($str);          }          //對明文內容進行加密處理        private function ciphertext($filename){              //$filename='index.php';              $T_k1=$this->RandAbc();              $T_k2=$this->RandAbc();              $vstr=file_get_contents($filename);              $v1=base64_encode($vstr);              $c=strtr($v1,$T_k1,$T_k2);            $this->c=$T_k1.$T_k2.$c;              return $this;          }        //初始設定變數          private function initialVar(){              $this->q1="O00O0O";//base64_decode              $this->q2="O0O000";//$c(原文經過strtr置換後的密文,由 目標字元+替換字元+base64_encode(‘原文內容’)構成)              $this->q3="O0OO00";//strtr              $this->q4="OO0O00";//substr              $this->q5="OO0000";//52              $this->q6="O00OO0";//urldecode解析過的字串(n1zb/ma5\vt0i28-pxuqy*6%6Crkdg9_ehcswo4+f37j)        }          //產生加密後的模板(複雜版本);          private function model(){              //$c = $this->c;            //$this->initialVar();              $this->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");$'.              $this->q1.'=$'.$this->q6.'{3}.$'.$this->q6.'{6}.$'.$this->q6.'{33}.$'.$this->q6.'{30};$'.$this->q3.'=$'.$this->q6.'{33}.$'.$this->q6.'{10}.$'              .$this->q6.'{24}.$'.$this->q6.'{10}.$'.$this->q6.'{24};$'.$this->q4.'=$'.$this->q3.'{0}.$'.$this->q6.'{18}.$'.$this->q6.'{3}.$'.$this->q3.'{0}              .$'.$this->q3.'{1}.$'.$this->q6.'{24};$'.$this->q5.'=$'.$this->q6.'{7}.$'.$this->q6.'{13};$'.$this->q1.'.=$'.$this->q6.'{22}.$'.$this->q6.'{36}              .$'.$this->q6.'{29}.$'.$this->q6.'{26}.$'.$this->q6.'{30}.$'.$this->q6.'{32}.$'.$this->q6.'{35}.$'.$this->q6.'{26}.$'.$this->q6.'{30};              eval($'.$this->q1.'("'.base64_encode('$'.$this->q2.'="'.$this->c.'";            eval(\'?>\'.$'.$this->q1.'($'.$this->q3.'($'.$this->q4.'($'.$this->q2.',$'.$this->q5.'*2),$'.$this->q4.'($'.$this->q2.',$'.$this->q5.',$'.$this->q5.'),              $'.$this->q4.'($'.$this->q2.',0,$'.$this->q5.'))));').'"));?>';              return $this;          }        //建立加密檔案          private function build($target){            //$this->encodes("./index.php");              //$this->model();              $fpp1 = fopen($target,'w');              fwrite($fpp1,$this->s) or die('寫入是失敗!');            fclose($fpp1);            return $this;          }          //加密處理 連貫操作          public function encode($file,$target){              //$file = "index.php";              //連貫操作其實就是利用函數處理完後返回自身              $this->ciphertext($file)->model()->build($target);            echo 'encode------'.$target.'-----ok';          }          //解密          public function decode($file,$target=''){            //讀取要解密的檔案            $fpp1 = file_get_contents($file);            $this->decodeMode($fpp1)->build($target);            echo 'decode------'.$target.'-----ok';        }        //解密模板,得到解密後的文本        private function decodeMode($fpp1){            //以eval為標誌 截取為數組,前半部分為密文中的替換掉的函數名,後半部分為密文            $m = explode('eval',$fpp1);            //對系統函數的替換部分進行執行,得到系統變數            $varStr = substr($m[0],strpos($m[0],'$'));            //執行後,後續就可以使用替換後的系統函數名            eval($varStr);            //判斷是否有密文            if(!isset($m[1])){                return $this;            }            //對密文進行截取 {$this->q4}  substr            $star =  strripos($m[1],'(');            $end = strpos($m[1],')');            $str = ${$this->q4}($m[1],$star,$end);            //對密文解密 {$this->q1}  base64_decode            $str = ${$this->q1}($str);            //截取出解密後的  核心密文            $evallen = strpos($str,'eval');            $str = substr($str,0,$evallen);            //執行核心密文 使系統變數被賦予值 $O0O000            eval($str);            //並不能將如下段封裝,因為 ${$this->qn} 並不能在全文中起作用            $this->s = ${$this->q1}(                ${$this->q3}(                    ${$this->q4}(                        ${$this->q2},${$this->q5}*2                    ),                    ${$this->q4}(                        ${$this->q2},${$this->q5},${$this->q5}                    ),                    ${$this->q4}(                        ${$this->q2},0,${$this->q5}                    )                )            );            return $this;        }        //遞迴讀取並建立目標目錄結構        private function targetDir($target){            if(!empty($target) )  {                if(!file_exists($target)){                    mkdir($target,0777,true);                }else{                    chmod($target,0777);                }            }        }        //遞迴解密 對指定檔案夾下的php檔案解密          public function decodeDir($source,$target=""){            if(is_dir($source)){                $this->targetDir($target);                $dir = opendir($source);                  while(false!=$file=readdir($dir))                  {                      //列出所有檔案並去掉'.'和'..' 此處用的執行個體為thinkphp架構,所以預設排除裡Thinkphp目錄,使用者可以按照自己的需求設定                    if($file!='.' && $file!='..' && $file !='ThinkPHP')                    {                          $path = $target.DIRECTORY_SEPARATOR.$file;                          $sourcePath =  $source.DIRECTORY_SEPARATOR.$file;                          $this->decodeDir($sourcePath,$path);                      }                  }                        }else if(is_file($source)){                  $extension=substr($source,strrpos($source,'.')+1);                  if(strtolower($extension)=='php'){                    $this->decode($source,$target);                  }else{                      //不是php的檔案不處理                      copy($source, $target);                  }                  //return;              }        }          //遞迴加密 對指定檔案夾下的php檔案加密          public function encodeDir($source,$target){            if(is_dir($source)){                $this->targetDir($target);                $dir = opendir($source);                  while(false!=$file=readdir($dir))                  {                      //列出所有檔案並去掉'.'和'..'                    if($file!='.' && $file!='..' && $file !='ThinkPHP')                    {                          $path = $target.DIRECTORY_SEPARATOR.$file;                          $sourcePath =  $source.DIRECTORY_SEPARATOR.$file;                          $this->encodeDir($sourcePath,$path);                      }                  }              }else if(is_file($source)){                $extension=substr($source,strrpos($source,'.')+1);                if(strtolower($extension)=='php'){                    $this->encode($source,$target);                }else{                      copy($source, $target);                  }            }          }    }      $ob = new Encryption();      $ob->source = "/var/www/bookReservation";    $ob->target = "/var/www/jiami/bookReservation";    //解密指定檔案      //$ob->decode('D:\\php\\WWW\\workspace\\weixin2\\Application\\Home\\Controller\\IndexController.class.php');            //$ob->decode('jiami.php');      //$ob->decode('dam6.php');      //對一個指定的檔案目錄進行加密      $ob->encodeDir($ob->source,$ob->target);    //對一個指定的檔案目錄進行解密    $ob->decodeDir($ob->target,"/var/www/jiami/bookReservationD");


http://www.bkjia.com/PHPjc/989126.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/989126.htmlTechArticlephp 實現php代碼的加密解密 php 代碼加密類,大家可以根據自己的需求進行修改,原類如下,是對之前的加密解密類的有一次修改,希望能分...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.