• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP给源代码加密的几种方法汇总(推荐)

    虽说分享是传统的美德,但我们有时候辛辛苦苦写一些程序只是为了卖点小钱,挣点辛苦费,也防止有些没有道德的人倒卖,所以我们不得不对我们的程序进行加密,以下我们来介绍一下如何通过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,'?php'); 
       $footerPos = strrpos($contents,'?>'); 
       $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos); 
       $encode = base64_encode(gzdeflate($contents)); // 开始编码 
       $encode = '?php'."\n eval(gzinflate(base64_decode("."'".$encode."'".")));\n\n?>"; 
     
       return file_put_contents($filename, $encode); 
      } 
      return false; 
     } 
     
     //调用函数 
     $filename = 'dam.php'; 
     encode_file_contents($filename); 
     echo "OK,加密完成!" 
     ?>

    第二个方法

    ?php 
     
     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 = '?php '."\n".$s."\n".' ?>'; 
     //echo $s; 
     // 生成 加密后的PHP文件 
     $fpp1 = fopen('temp_'.$filename, 'w'); 
     fwrite($fpp1, $s) or die('写文件错误'); 
     
     ?>

    第三个方法

    ?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  $n_data_long; ++$i) { 
        if ($j + 4 = $n_key_long) { 
         $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  $n_enc_data_long; $i += 2) { 
        if ($j + 4 = $n_key_long) { 
         $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 = $len) { 
          $data .= $this->_long2str($w[1]); 
         } else { 
          $data .= substr($this->_long2str($w[1]), 0, $len % 4); 
         } 
        } else { 
         $pos = ($i - 1) * 4; 
         if ($pos + 4 = $len) { 
          $data .= $this->_long2str($w[0]); 
     
          if ($pos + 8 = $len) { 
           $data .= $this->_long2str($w[1]); 
          } elseif ($pos + 4  $len) { 
           $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  4 ^ $this->_rshift($z, 5), $z) ^ 
              $this->_add($sum, $k[$sum  3])); 
        $sum = $this->_add($sum, $delta); 
        $z  = $this->_add($z, 
             $this->_add($y  4 ^ $this->_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  4 ^ $this->_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  4 ^ $this->_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  $n - $nmod + $size; ++$i) { 
          $data[$i] = $data[$i % $n]; 
         } 
        } else { 
         for ($i = $n; $i  $n - $nmod + $size; ++$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 || -0xffffffff > $integer) { 
        $integer = fmod($integer, 0xffffffff + 1); 
       } 
     
       if (0x7fffffff  $integer) { 
        $integer -= 0xffffffff + 1.0; 
       } elseif (-0x80000000 > $integer) { 
        $integer += 0xffffffff + 1.0; 
       } 
     
       if (0 > $integer) { 
        $integer = 0x7fffffff; 
        $integer >>= $n; 
        $integer |= 1  (31 - $n); 
       } 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 || -0xffffffff > $result) { 
        $result = fmod($result, 0xffffffff + 1); 
       } 
     
       if (0x7fffffff  $result) { 
        $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);

    以上这篇PHP给源代码加密的几种方法汇总(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 基于php实现的php代码加密解密类完整实例
    • php_screw安装使用教程(另一个PHP代码加密实现)
    • 怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
    • PHP代码加密的方法总结
    上一篇:php 替换文章中的图片路径,下载图片到本地服务器的方法
    下一篇:php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP给源代码加密的几种方法汇总(推荐) PHP,给,源代码,加密,的,几种,