首页技术php字符串加密 php在线加密

php字符串加密 php在线加密

编程之家2026-06-24896次浏览

很多朋友对于php字符串加密和php在线加密不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

php字符串加密 php在线加密

php源码怎么加密

一、无需任何PHP扩展的加密

此类加密的代表有威盾PHP加密专家、PHP在线加密平台、PHP神盾等。

此类加密都是以eval函数为核心,辅以各式各样的字符串混淆和各种小技巧,来达到加密目的(更准确的说,应该算是混淆)。下面以一个简单的hello world为例来说明此类加密的大体过程。

<?php

echo"hello world";

首先,我们把这段代码变为通过eval执行的

php字符串加密 php在线加密

<?php

eval('echo"hello world";');

然后,我们再进行一些转换,比如说base64编码

<?php

eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));

就这样子,我们的第一个加密过的php代码新鲜出炉了。。。

php字符串加密 php在线加密

上面这个例子非常非常简单,基本上任何有一点php语言基础甚至别的语言基础的人都能轻松的看懂并解密。因此,我们需要一些方法让这个加密至少看上去不是那么简单。

二、同时采用多种编码函数

除了刚才提到的base64,php还有许多内置的编码函数,例如urlencode、gzcompress等。把这些函数混合使用可以提高解密的复杂度(不是难度),此外还可以使用strtr来制定自己的编码规则。使用变量来代替函数名使用特定字符来命名变量

这儿所说的特定字符是一些极其相似的字符,如I和1,0和O。试想一下满屏都是O和0组成的变量,并且每一个的名字长度都在10个字符以上。。。判断文件自身是否被修改

这个功能看似容易,对文件做一下摘要再进行下对比即可知道是否被修改了,但是如何才能在文件内把摘要嵌入进去呢?我没有找到完美的方案,但一个变通的方案还是很容易的。。。

<?php

$code= substr(file_get_contents(__FILE__), 0,-32);

$hash= substr(file_get_contents(__FILE__),-32);

if(md5($code)!==$hash){

exit('file edited');

}

ACBC41F727E00F85BEB3440D751BB4E3

当然,你可以把这个校验字符串放在别的位置来提高破解的难度。有了这个,别人想破解你的程序可就得多费一点功夫了。。。

既然知道了原理,那解密自然也就非常简单了,总体来说就三步:

把eval替换为输出,比如echo根据编码规则把字符串还原如果文件未解密完全,从第一步开始继续

当然,实际上的解密过程并没有这么简单,比如说如果加密的时候使用了gzcompress,那得到的数据将会包含一些二进制数据,而采用一般的文本编辑器打开时这些数据都会显示为乱码,并且在保存时丢失部分数据。解决方法很简单也很麻烦,那就是使用二进制(16进制)方式打开、修改和保存。

急! php写的加密函数如何用java解密

php,jsp,delphi多语言兼容的简单的加密解密算法,jsp目前暂时没有实现中文的加密解密兼容。希望哪路高手能帮忙补上。

1,php的需要对以上代码稍加修改,内容如下:

<?php

$key="admin";

function keyED($txt,$encrypt_key){

$encrypt_key= md5($encrypt_key);

$ctr=0;

$tmp="";

for($i=0;$i<strlen($txt);$i++){

if($ctr==strlen($encrypt_key))$ctr=0;

$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);

$ctr++;

}

return$tmp;

}

function encrypt($txt,$key){

srand((double)microtime()*1000000);

$encrypt_key= md5(rand(0,32000));

$ctr=0;

$tmp="";

for($i=0;$i<strlen($txt);$i++){

if($ctr==strlen($encrypt_key))$ctr=0;

$bbb=substr($encrypt_key,$ctr,1).

(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));

$tmp.=$bbb;

$ctr++;

}

return base64_encode(keyED($tmp,$key));

}

function decrypt($txt,$key){

$txt=base64_decode($txt);

$txt= keyED($txt,$key);

$tmp="";

for($i=0;$i<strlen($txt);$i++){

$md5= substr($txt,$i,1);

$i++;

$tmp.=(substr($txt,$i,1) ^$md5);

}

return$tmp;

}

$string="hello world!";

// encrypt$string, and store it in$enc_text

$enc_text= encrypt($string,$key);

// decrypt the encrypted text$enc_text, and store it in$dec_text

$dec_text= decrypt($enc_text,$key);

echo"原字符串:".$string."<br/>";

echo"加密字符串:".$enc_text."<br/>";

echo"解密字符串:".$dec_text."<br/>";

?>

2,jsp代码(java类)

package com.intwork.struct.common;

import java.util.Random;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

public class KeyED{

public char[] keyED(char[] cText,String encrype_key){

encrype_key=MD5.getInstance(encrype_key).encrypt();

int ctr=0;

char[] cEncrype_key=encrype_key.toCharArray();

char[] temp=new char[cText.length];

int ind=0;

String tmp="";

for(int i=0;i<cText.length;i++){

if(ctr==cEncrype_key.length){

ctr=0;

}

temp[ind++]=(char)(cText[i] ^ cEncrype_key[ctr]);

ctr++;

}

return temp;

}

public String encrype(String text,String key){

String encrype_key=MD5.getInstance(String.valueOf(new Random().nextInt(1000000))).encrypt();

int ctr=0;

char[] cText=text.toCharArray();

char[] cEncrype_key=encrype_key.toCharArray();

char[] temp=new char[cText.length*2];

int ind=0;

String tmp="";

for(int i=0;i<cText.length;i++){

if(ctr==cEncrype_key.length){

ctr=0;

}

temp[ind++]=cEncrype_key[ctr];

temp[ind++]=(char)(cText[i]^cEncrype_key[ctr]);

ctr++;

}

BASE64Encoder b= new sun.misc.BASE64Encoder();

return b.encode(new String(this.keyED(temp,key)).getBytes());

}

public String decrype(String text,String key)throws Exception{

BASE64Decoder decoder= new BASE64Decoder();

text=new String(decoder.decodeBuffer(text));

char[] cText=text.toCharArray();

char[] temp=new char[cText.length/2];

int ind=0;

cText=this.keyED(cText, key);

String tmp="";

for(int i=0;i<cText.length;i++){

char md5=cText[i];

i++;

temp[ind++]=(char)(cText[i]^md5);

}

return new String(temp);

}

}

3,delphi代码(只有加密代码,没写解密代码。有兴趣的可以给补上)

function Tfrmunmsgmain.EnPlugPwcrypt(str, skey: string): string;

//加密插件用的字符串

var

IdEncoder64: TIdEncoderMIME;

sencrypt_key, stemp, stemp1: string;

ictr, i: Integer;

ifirst, ilast: Integer;

function enpwcrypt(str, skey: string): string;

//获取加密后的字符串

var

stemp, sencrypt_key: string;

ictr, i: Integer;

ifirst, ilast: Integer;

begin

try

result:='';

try

sencrypt_key:= LowerCase(UMD5Crypt.UGetMd5Str(skey));

ictr:= 1;

stemp:='';

for I:= 1 to length(str) do

begin

if(ictr= length(sencrypt_key)) then

ictr:= 1;

ifirst:= Ord(midstr(str,i,1)[1]);

ilast:= Ord(midstr(sencrypt_key,ictr,1)[1]);

stemp:= stemp+

chr((ifirst) XOR(ilast));

inc(ictr);

end;

result:= stemp;

except

end;

except

end;

//

end;

begin

try

result:='';

try

IdEncoder64:= TIdEncoderMIME.Create(Application);

sencrypt_key:= LowerCase(UMD5Crypt.UGetMd5Str(inttostr((Random(100000)))));

ictr:= 1;

stemp:='';

stemp1:='';

for I:= 1 to length(str) do

begin

if(ictr= length(sencrypt_key)) then

ictr:= 1;

ifirst:= Ord(midstr(str,i,1)[1]);

ilast:= Ord(midstr(sencrypt_key,ictr,1)[1]);

stemp1:= midstr(sencrypt_key,ictr,1)+

chr((ifirst) XOR(ilast));

stemp:= stemp+ stemp1;

inc(ictr);

end;

result:= IdEncoder64.Encode(enpwcrypt(stemp, skey))

finally

freeandnil(IdEncoder64);

end;

except

end;

end;

下面这一段php用什么方式加密,如何解密

算不上什么加密吧,程序中只是用了URL编码和BASE64编码的转换

简单的分析如下,供参考

<?php

//变量注意区分数字"0"和字符"O"

$OOO000000=urldecode('%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64');

//解码已编码的 URL字符串,解码结果是 fg6sbehpra4co_tnd

$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};

//然后把解码后的字符分别取得 4, 9, 3, 5里面的值并连接在一起,结果是 base。

//下同,最后的结果是 base64_decode

$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};

$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};

?>

<?php eval($GLOBALS['OOO0000O0']('JElJSUlJSUlJSUlJST0naGVhZGVyJzskSUlJSUlJSUlJbDExPSdpc19maWxlJzs='));

//$GLOBALS已经定义的变量,$GLOBALS['OOO0000O0']值就是 base64_decode,然后用它解码后面的字符串,结果是$IIIIIIIIIIII='header';$IIIIIIIIIl11='is_file'; eval执行解出来的字符串,并得到相应的变量

?>

<?php/**/

$OOO000O00=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};

//同上可得$OOO000O00='fopen'

$O0O000O00=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};

//$O0O000O00='fget'

$O0O000O0O=$O0O000O00.$OOO000000{11};

//$O0O000O0O='fgetc'

$O0O000O00=$O0O000O00.$OOO000000{3};

//$O0O000O00='fgets'

$O0O00OO00=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};

//$O0O00OO00='fread'

$OOO00000O=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};

//$OOO00000O='strtr'

$OOO0O0O00=__FILE__;

//取得当前文件路径和文件名

$OO00O0000=0x100;

eval($OOO0000O0('JE8wMDBPME8wMD0kT09PMDAwTzAwKCRPT08wTzBPMDAsJ3JiJyk7JE8wTzAwT08wMCgkTzAwME8wTzAwLDB4NTI2KTskT08wME8wME8wPSRPT08wMDAwTzAoJE9PTzAwMDAwTygkTzBPMDBPTzAwKCRPMDAwTzBPMDAsMHgxN2MpLCdaQnhMYkZtQzYybHBja1hQYWRyR1VIOTRLN1FOUzVWdlJXenlpL2dPMEFUWU1EcXRvZkVJdStoZTNqd0oxOG5zPScsJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSk7ZXZhbCgkT08wME8wME8wKTs='));

/*解出的结果是

$O000O0O00=$OOO000O00($OOO0O0O00,'rb');$O0O00OO00($O000O0O00,0x526);$OO00O00O0=$OOO0000O0($OOO00000O($O0O00OO00($O000O0O00,0x17c),'ZBxLbFmC62lpckXPadrGUH94K7QNS5VvRWzyi/gO0ATYMDqtofEIu+he3jwJ18ns=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));eval($OO00O00O0);

还原得并等价替换可得

$fp=fopen(__FILE__,'rb');

fread($fp,0x526);

$buf= fread($fp,0x17c);

$str=base64_decode(strtr($buf,'ZBxLbFmC62lpckXPadrGUH94K7QNS5VvRWzyi/gO0ATYMDqtofEIu+he3jwJ18ns=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'));

eval($str);

*/

return;?>eu~fQ\FRCgGpG@Lo`oQ2b8PcLBPcLBPcL+I5C2vSgHoNmFy7rRO4+8mrUfF4+1Opx6O6z3iGu8Pcb1oGIZopz6O6zoiGu8PcLZocb1olxdPGu1ocLZocb102b1oGIZoGu1ocxRiGIZocb1oGIZopxdPGIZoGIZocLZApx5QaOWcKi7DaIKENCByQ+WaK9dEd+H6XGdpk+FXUIH95/24VO/Aph5PcbFU9U+bS4dt7iH25rD07GkT5u0fXmjIPrSM2uFxaudFdi56rUApGb+XG+BdU/kUHH749F/QK92y7mHg7hWAQgDMN9jtSCFESed+5O53V40ocG6IkLUhkIRjlE1OlriAXh7yNm8I7rRiGIZocb1oGIZolGD/5gFMlxdPGIZoGIZoGIZAXo==xzd2rU/2rU/2rU/Mc9oRPrZidufPaiFcU+MOrU/2rU/2rU/2NLbf2+u02hfAKz8yNhjgQ9SqSmWo2EiJxg/g6xRirU/2rU/2rU/2NLFM6Lu8PrBuSOH/laAJ2b5cGu2BGFkN2u/2rU/2rU/2rU/2rr55lx2cNhkW5m/tNy0RQxjoQCZzlGD8xgHMShUlVEdCGb8xaUfG9E52rU/2rU/2rU/2rUiO4rRzGm8yK4dANh3w6m/qSedWNmozlGD8xR==kLHgJcZ[ZM

望采纳,谢谢

——————来自畅移,您的移动贴心管家

php字符串加密和php在线加密的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

ai一键去除衣服软件下载地址?能把衣服消除的软件王者荣耀S26更新公告,王者荣耀2.6更新内容