Home > Backend Development > PHP Tutorial > How to encrypt PHP source code? Solution to PHP binary encryption and decryption_PHP tutorial

How to encrypt PHP source code? Solution to PHP binary encryption and decryption_PHP tutorial

WBOY
Release: 2016-07-21 15:11:43
Original
1219 people have browsed it

Share 2 PHP source code encryption methods. This encryption method supports any PHP version.

Note that the encrypted PHP code does not require a third-party tool to decrypt it, just run it directly as usual.

Copy code The code is as follows:

function encode_file_contents($filename) {
$ type=strtolower(substr(strrchr($filename,'.'),1));
if ('php' == $type && is_file($filename) && is_writable($filename)) { // if it is PHP files are compressed and encoded if they are writable
$contents = file_get_contents($filename); // Determine whether the file has been encoded
$contents = php_strip_whitespace($filename);

// Remove PHP header and trailer tags
$headerPos = strpos($contents,' $footerPos = strrpos($contents,'?>');
$contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);
$encode = base64_encode(gzdeflate($contents)); // Start encoding
$encode = '";

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

//Call function
$filename = 'dam.php';
encode_file_contents($filename);
echo "OK, encryption Done! "
?>

Encryption method 2:
Copy code The code is as follows:


function RandAbc($length = "") { // Return a random string
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return str_shuffle($str);
}

$filename = 'index.php'; //File to be encrypted
$T_k1 = RandAbc(); //Random key 1
$T_k2 = RandAbc() ; //Random key 2
$vstr = file_get_contents($filename);
$v1 = base64_encode($vstr);
$c = strtr($v1, $T_k1, $T_k2); / /Replace the corresponding characters according to the key.
$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;
// Generate encrypted PHP file
$fpp1 = fopen('temp_'.$filename, 'w');
fwrite($fpp1, $s) or die('Write file error');

?>

Actually, there are many ways to encrypt PHP source code, such as the free Micro Shield PHP encryption, and the online encryption provided by www.phpjm.net, but phpjm is more complicated.

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

In addition, share a PHP class that can perform binary encryption and decryption of text content. The code is as follows:
Copy the code The code is as follows:


 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; 
     } 
 }
?>
The usage method is as follows:
// Encryption process
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'; // The encrypted text is binary and cannot be viewed normally with an ordinary text editor
file_put_contents($filename, $str);
//Decryption process
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);

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/326827.htmlTechArticleshares 2 PHP source code encryption methods. This encryption method supports any PHP version. Note that the encrypted PHP code does not require a third-party tool to decrypt, just run it directly as usual. Copy code...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template