PHP给源代码加密的几种方法汇总(推荐)
虽说分享是传统的美德,但我们有时候辛辛苦苦写一些程序只是为了卖点小钱,挣点辛苦费,也防止有些没有道德的人倒卖,所以我们不得不对我们的程序进行加密,以下我们来介绍一下如何通过PHP的自定义函数来加密我们的PHP源代码。
第一个方法
'); $contents=substr($contents,$headerPos+5,$footerPos-$headerPos); $encode=base64_encode(gzdeflate($contents));//开始编码 $encode='"; returnfile_put_contents($filename,$encode); } returnfalse; } //调用函数 $filename='dam.php'; encode_file_contents($filename); echo"OK,加密完成!" ?>
第二个方法
\'.$'.$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)ordie('写文件错误');
?>
第三个方法
setIter(32);
}
functionsetIter($n_iter)
{
$this->n_iter=$n_iter;
}
functiongetIter()
{
return$this->n_iter;
}
functionencrypt($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;
}
functiondecrypt($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);
returnpack('H'.$len,$str);
}
function_str2long($start,&$data,&$data_long)
{
$n=strlen($data);
$tmp=unpack('N*',$data);
$j=$start;
foreach($tmpas$value)
$data_long[$j++]=$value;
return$j;
}
function_long2str($l)
{
returnpack('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;
}
}
?>
使用方法参考如下:
//加密过程
viewsourceprint?
$text_file=S_ROOT.'./456.php';
$str=@file_get_contents($text_file);
require_onceS_ROOT."./text_auth.php";
$text_auth=newtext_auth(64);
$str=$text_auth->encrypt($str,"qianyunlai.com");
$filename=S_ROOT.'./789.php';//加密后的文本为二进制,普通的文本编辑器无法正常查看
file_put_contents($filename,$str);
//解密过程
viewsourceprint
?01$text_file=S_ROOT.'./789.php';
$str=@file_get_contents($text_file);
require_onceS_ROOT."./text_auth.php";
$text_auth=newtext_auth(64);
$str=$text_auth->decrypt($str,"qianyunlai.com");
$filename=S_ROOT.'./456.php';
file_put_contents($filename,$str);
以上这篇PHP给源代码加密的几种方法汇总(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。