找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 446|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 08:22:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            分享2种PHP的源码加密方式,此加密方法支持任意PHP版。
注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可。
[U]复制代码[/U] 代码如下:
');  
         $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:
[U]复制代码[/U] 代码如下:
\'.$'.$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类,它能对 文本的内容进行 二进制加密 与 解密,代码如下:
[U]复制代码[/U] 代码如下:
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 _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 _decipherLong($enc_data_long[$i], $enc_data_long[$i + 1], $w, $k);  
             if (0 == $i) {  
                 $len = $w[0];  
                 if (4 _long2str($w[1]);  
                 } else {  
                     $data .= substr($this->_long2str($w[1]), 0, $len % 4);  
                 }  
             } else {  
                 $pos = ($i - 1) * 4;  
                 if ($pos + 4 _long2str($w[0]);  
                     if ($pos + 8 _long2str($w[1]);  
                     } elseif ($pos + 4 _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  $integer) {  
             $integer = fmod($integer, 0xffffffff + 1);  
         }  
         if (0x7fffffff  $integer) {  
             $integer += 0xffffffff + 1.0;  
         }  
         if (0 > $integer) {  
             $integer &= 0x7fffffff;  
             $integer >>= $n;  
             $integer |= 1 >= $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) {  
             $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可逆加密/解密函数分享
  • PHP加密函数 Javascript/Js 解密函数
  • php加密解密函数authcode的用法详细解析
  • 一个PHP针对数字的加密解密类
  • 2个比较经典的PHP加密解密函数分享
  • php中base64_decode与base64_encode加密解密函数实例
  • php rsa加密解密使用详解
  • PHP使用自定义key实现对数据加密解密的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端