백엔드 개발 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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 암호화 및 복호화 방법과 일반적인 문제에 대한 솔루션 PHP 암호화 및 복호화 방법과 일반적인 문제에 대한 솔루션 Jun 09, 2023 pm 01:50 PM

PHP는 웹 애플리케이션 개발에 널리 사용되는 인기 있는 서버측 프로그래밍 언어입니다. 실제 응용 프로그램에서 PHP 암호화 및 암호 해독은 매우 일반적인 작업입니다. 이 기사에서는 PHP의 일반적인 암호화 및 암호 해독 방법과 일반적인 문제에 대한 솔루션을 소개합니다. 1. 암호화 방식 1. 대칭형 암호화 방식(SymmetricCryptography) 대칭형 암호화 방식은 암호화 기술에서 가장 널리 사용되는 방식이다. 이 방법은 동일한 키를 사용하여 데이터를 암호화하고 해독합니다. PHP에서는 일반적으로 사용되는 대칭 암호화

PHP가 데이터 보안을 보장하기 위해 데이터 암호화, 암호 해독 및 전송을 구현하는 방법 PHP가 데이터 보안을 보장하기 위해 데이터 암호화, 암호 해독 및 전송을 구현하는 방법 Jun 27, 2023 am 10:44 AM

네트워크 기술의 지속적인 발전으로 인해 데이터 보안에 대한 관심이 더욱 높아지고 있습니다. 정보화 시대에 널리 사용되는 프로그래밍 언어인 PHP 역시 데이터 보안 문제에 직면해 있습니다. 이 기사에서는 데이터 보안을 보장하기 위해 PHP를 사용하여 데이터 암호화, 암호 해독 및 전송을 구현하는 방법을 소개합니다. 1. 데이터 암호화 데이터 암호화는 원본 데이터를 처리하고 이를 무작위로 보이는 문자 시퀀스로 변환하여 원본 데이터를 보호하는 기술을 말합니다. 암호화는 단방향 암호화와 대칭 암호화로 구분됩니다. 단방향 암호화는 암호화 작업만 수행할 수 있음을 의미합니다.

PHP 배열을 사용한 데이터 암호화 및 복호화 방법 및 기술 PHP 배열을 사용한 데이터 암호화 및 복호화 방법 및 기술 Jul 16, 2023 pm 04:02 PM

PHP 배열을 사용한 데이터 암호화 및 해독 방법 및 기술 요약: 데이터 암호화는 정보 보안에서 중요한 역할을 합니다. 이 기사에서는 민감한 정보의 보안을 보호하기 위해 PHP 배열을 사용하여 데이터 암호화 및 암호 해독을 구현하는 방법과 기술을 소개합니다. 서문 현대 사회에서 네트워크 보안 문제는 점점 더 많은 관심을 받고 있습니다. 민감한 정보의 보안을 보호하기 위해 데이터 암호화가 일반적인 방법입니다. PHP 배열은 데이터를 저장하고 조작하는 데 사용할 수 있는 강력하고 유연한 데이터 구조입니다. 민감한 데이터를 PHP 배열에 저장하여

PHP 암호화 기술을 사용하여 등록 프로세스를 보호하고 등록 사기를 방지하는 방법 PHP 암호화 기술을 사용하여 등록 프로세스를 보호하고 등록 사기를 방지하는 방법 Aug 19, 2023 pm 12:05 PM

등록 프로세스를 보호하고 등록 사기를 방지하기 위해 PHP 암호화 기술을 사용하는 방법 오늘날의 인터넷 시대에 등록 시스템은 모든 웹사이트의 기본 기능이 되었습니다. 그러나 인터넷의 개방성과 자유로운 접근으로 인해 일부 범죄자들은 ​​자동화된 스크립트를 사용하여 악의적인 등록을 수행하여 웹사이트의 정상적인 운영에 문제를 일으키는 경우가 많습니다. 따라서 등록절차를 보호하고 등록사기를 예방하는 것이 매우 중요한 과제가 되었습니다. 등록 프로세스를 보호하고 등록 사기를 방지하기 위해 PHP 암호화 기술을 사용하여 등록 시스템의 보안을 강화할 수 있습니다. 아래에

PHP의 암호화 및 복호화 PHP의 암호화 및 복호화 May 26, 2023 pm 12:51 PM

웹 개발에서 보안은 항상 가장 중요한 문제 중 하나였습니다. 키 유출, 데이터 변조, 도난 등의 위험은 항상 존재하므로 데이터 보안을 보호하는 것이 특히 중요합니다. 데이터 보안을 보장하기 위해 당사는 일반적으로 데이터 처리에 암호화 및 암호 해독을 사용합니다. PHP에서는 암호화와 복호화도 매우 중요한 부분입니다. 1. PHP의 암호화 방법 PHP에는 많은 암호화 방법이 있습니다. 아래에서는 일반적으로 사용되는 몇 가지 암호화 방법을 소개합니다. md5 암호화 md5는 일반적으로 사용되는 암호화 방법입니다. 그것

PHP의 암호화 및 복호화 기술과 일반적인 문제에 대한 솔루션 PHP의 암호화 및 복호화 기술과 일반적인 문제에 대한 솔루션 Jun 09, 2023 pm 12:36 PM

네트워크 기술이 대중화되면서 네트워크 보안 문제에 대한 관심이 높아지고 있으며, 암호화 및 복호화 기술 역시 많은 관심을 받고 있습니다. PHP 프로그래밍에서 암호화 및 암호 해독 기술은 데이터 보안을 보장하고 데이터 도난 및 악의적인 공격을 방지하는 데 도움이 될 수 있습니다. 이 기사에서는 PHP에서 일반적으로 사용되는 암호화 및 복호화 알고리즘과 솔루션을 소개합니다. 1. 암호화 및 복호화 기술의 역할 네트워크에서 데이터 전송은 범죄자에 의해 데이터가 가로채기, 변조, 도난당하는 등 안전하지 않은 상황에 자주 직면합니다.

PHP 보안 민감정보의 암호화 및 복호화 기술 분석 PHP 보안 민감정보의 암호화 및 복호화 기술 분석 Jun 30, 2023 pm 02:01 PM

PHP의 보안에 민감한 데이터 암호화 및 복호화 기술 분석 인터넷의 발달로 인해 데이터 보안이 중요한 문제로 대두되고 있습니다. 웹사이트 개발자에게는 사용자의 민감한 데이터를 보호하는 방법이 특히 중요합니다. PHP에서는 다양한 암호화 및 암호 해독 기술을 사용하여 민감한 데이터를 보호할 수 있습니다. 이 기사에서는 PHP의 보안에 민감한 데이터 암호화 및 암호 해독 기술에 대한 심층 분석을 제공합니다. 1. 암호화의 기본원리 암호화란 평문을 암호문으로 변환하는 과정을 말하며, 암호문을 해독하고 평문으로 복원할 수 있는 것은 키를 가진 사람뿐이다. PHP에서는 일반적인 암호화 방법

PHP를 사용하여 데이터 전송을 보호하는 방법 PHP를 사용하여 데이터 전송을 보호하는 방법 Jun 25, 2023 am 10:06 AM

네트워크 기술이 지속적으로 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션이 데이터 전송 보안에 대한 요구가 높아지고 있습니다. 특히 민감한 정보가 포함된 웹사이트 및 애플리케이션의 경우 PHP를 사용하여 데이터 전송 보안을 보호하는 방법이 중요합니다. 이 기사에서는 데이터 전송의 보안을 보호하기 위한 몇 가지 PHP 방법을 소개합니다. 1. HTTPS 프로토콜 사용 HTTPS는 데이터 전송 보안을 달성하기 위해 TLS/SSL 프로토콜을 기반으로 하는 HTTP 프로토콜입니다. HTTPS 프로토콜을 사용하면 클라이언트와 서버 간의 정보 전송이 보장됩니다.

See all articles