加密解密php
看是怎么加密的了,MD5是解不了的说能解的都是自己做的数据库匹配。
下面这个是常用的加密解密方法
<?php
/**
*字符串加密、解密函数
*
*@paramstring$txt字符串
*@paramstring$operationENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,
*@paramstring$key密钥:数字、字母、下划线
*@paramstring$expiry过期时间
*@returnstring
*/
functionsys_auth($string,$operation='ENCODE',$key='',$expiry=0){
$ckey_length=4;
$key=md5($key!=''?$key:C('COOKIE_AUTH_KEY'));
$keya=md5(substr($key,0,16));
$keyb=md5(substr($key,16,16));
$keyc=$ckey_length?($operation=='DECODE'?substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):'';
$cryptkey=$keya.md5($keya.$keyc);
$key_length=strlen($cryptkey);
$string=$operation=='DECODE'?base64_decode(strtr(substr($string,$ckey_length),'-_','+/')):sprintf('%010d',$expiry?$expiry+time():0).substr(md5($string.$keyb),0,16).$string;
$string_length=strlen($string);
$result='';
$box=range(0,255);
$rndkey=array();
for($i=0;$i<=255;$i++){
$rndkey[$i]=ord($cryptkey[$i%$key_length]);
}
for($j=$i=0;$i<256;$i++){
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i<$string_length;$i++){
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation=='DECODE'){
if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){
returnsubstr($result,26);
}else{
return'';
}
}else{
return$keyc.rtrim(strtr(base64_encode($result),'+/','-_'),'=');
}
}
?>
㈡ php源代码被加密了,请问如何解密
php源码被使用zend加密,现阶段还没用解密方法。但是好像现在有这样的一个studio,他们成功地完成了zend和eac的decode
不过是收费的
㈢ 加密的php文件怎么解密
只是用了一些特殊符号作为array的key和function的参数罢了,没啥好研究的,可以直接把这些特殊符号替换成英文就好了
㈣ php 加密解密
如果这前后四位数 都是估计的四位,那么就可以实现用一个方法
把这个字符串穿进去,
然后截取,前面的四位和后面的四位,
然后加密好了,再重新拼接好返回即可。
㈤ 请教php源码加密及解密问题
用dw编辑器自带的加密工具,或者自己写js加密解密脚本
㈥ 如何加密解密php源代码
用Zend的加密吧,但是还是可以解密的,这也没办法,凡是对称加密或非不可逆的加密算法,均可以解密,这只是时间问题。特别是没有密码的加密(不可逆除外)。可以这样,使用AES加密,再用GZIP压缩,然后运行时解密,在eval那些代码。前提是每个加密的文件的密码都不同,要购买才可以解密运行。
㈦ PHP加密 怎么破
#tar -xzf vld-0.8.0.tgz //解压
#mv vld-0.8.0 vld //重命名
#cd -R vld ../php-4.3.8/ext //拷贝vld目录到php的解压目录下的ext中
#cd php-4.3.8
#rm configure //删除configure, 因为下面的buildconf会重新生成新的configure
#./buildconf //如果出现错误, 就按提示加上相应的参数.
#./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新检查php#make 编译#make install 安装
服务器必须先安装ZendOptimizer
运行Zend后的文件, 查看源代码就可以看到了.
解密ZEND加密后的PHP文件 执行
#tar -xzf vld-0.8.0.tgz //解压
#mv vld-0.8.0 vld //重命名
#cd -R vld ../php-4.3.8/ext //拷贝vld目录到php的解压目录下的ext中
#cd php-4.3.8
#rm configure //删除configure, 因为下面的buildconf会重新生成新的configure
#./buildconf //如果出现错误, 就按提示加上相应的参数.
#./configure --with-mysql --with-apxs2=/usr/www/bin/apxs --enable-vld 重新检查php#make 编译#make install 安装
服务器必须先安装ZendOptimizer运行Zend后的文件, 查看源代码就可以看到了
㈧ php代码加密怎么解密
$key="Thisissupposedtobeasecretkey!!!";
functionkeyED($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;
}
functionencrypt($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;
$tmp.=substr($encrypt_key,$ctr,1).
(substr($txt,$i,1)^substr($encrypt_key,$ctr,1));
$ctr++;
}
returnkeyED($tmp,$key);
}
functiondecrypt($txt,$key)
{
$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="HelloWorld!!!";
//encrypt$string,andstoreitin$enc_text
$enc_text=encrypt($string,$key);
//decrypttheencryptedtext$enc_text,andstoreitin$dec_text
$dec_text=decrypt($enc_text,$key);
//加密
functionstr2hex($s)
{
$r="";
$hexes=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for($i=0;$i<strlen($s);$i++)=""$r.=($hexes[(ord($s{$i})>>4)].$hexes[(ord($s{$i})&0xf)]);
return$r;
}
//解密
functionhex2str($s)
{
$r="";
for($i=0;$i<strlen($s);$i=""+="2)"{
$x1=ord($s{$i});
$x1=($x1>=48&&$x1<58)?$x1-48:$x1-97+10;
$x2=ord($s{$i+1});
$x2=($x2>=48&&$x2<58)?$x2-48:$x2-97+10;
$r.=chr((($x1<<4)&0xf0)|($x2&0x0f));
}
return$r;
}
echostr2hex("山东");
echo"
";
echohex2str("c9bdb6ab");
?>
㈨ PHP常用加密解密方法
作者/上善若水
1.md5(string $str,bool $flag = false);
$flag = false 默认返回32位的16进至数据散列值
$flag = true 返回原始流数据
2.sha1($string,$flag = false)
$flag = false 默认返回40位的16进至数据散列值
true 返回原始流数据
3.hash(string $algo,srting $str,bool $flag);
$algo : 算法名称,可通过hash_algos()函数获取所有hash加密的算法
如:md5,sha1等,采用md5,sha1加密所得结果和1,2两种方式结 果相同。
$flag = false 默认返回16进至的数据散列值,具体长度根据算法不同
而不同。
true 返回原始流数据。
4.crypt(string $str,$string $salt);
函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串。
具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关。比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
5.password_hash ( string $str, integer $algo [, array $options ] )
函数返回哈希加密后的密码字符串, password_hash() 是crypt()的 一个简单封装
$algo : 算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT
$options = [
“cost”=>10,//指明算法递归的层数,
“salt”=>“xxadasdsad”//加密盐值,即将被遗 弃,采用系统自动随机生成安全性更高
];
使用的算法、cost 和盐值作为哈希的一部分返回
Password_verify($str,$hashed);
6.base64_encode(string $str)
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层 传输,例如电子邮件的主体。base64_decode(string $encoded)
可以进行解码;
7.mcrypt_encrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
string $mode [, string $iv ] )
$ciper:加密算法,mcrypt_list_algorithms()可以获取该函数所有支持的算法
如MCRYPT_DES(“des”),MCRYPT_RIJNDAEL_128(“rijndael-128”);
$mode : 加密模式 ,mcrypt_list_modes()获取所有支持的加密模式,ecb,cbc
$key: 加密的秘钥,mcrypt_get_key_size ( string $cipher , string $mode )
获取指定的算法和模式所需的密钥长度。$key要满足这个长度,如果长 度无效会报出警告。
$iv : 加密的初始向量,可通过mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),
Iv的参数size:
通过mcrypt_get_iv_size ( string $cipher , string $mode )获取
Iv 的参数source:
初始向量数据来源。可选值有: MCRYPT_RAND (系统随机数生成 器), MCRYPT_DEV_RANDOM (从 /dev/random 文件读取数据) 和 MCRYPT_DEV_URANDOM (从 /dev/urandom 文件读取数据)。 在 Windows 平台,PHP 5.3.0 之前的版本中,仅支持 MCRYPT_RAND。
请注意,在 PHP 5.6.0 之前的版本中, 此参数的默认值 为 MCRYPT_DEV_RANDOM。
Note: 需要注意的是,如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态。
$data : 要加密的字符串数据
㈩ php文件被加密怎么破解
可以用黑刀Dezender来试试,我不担保可以解出来的哦,
从黑刀Dezender4.3版之后,将着力对混淆函数以及自定义函数的解密进行应对。
大家下载压缩包并解压后,会发现有一个“config.ini”的文件,这就是混淆函数库啦!
打开后,可自行编辑其中的内容,当然,也可以通过黑刀Dezender的升级程序直接下载官方最新的混淆函数库文件。这个混淆函数库就相当于是一个字典文件了,在保证格式不变的情况下,大家可以在【黑刀部落】下载《黑刀超级字典生成器》生成字典来挂入主程序进行解密,正确步骤为:先备份、改名自己的config.ini文件,生成的字典文件在第一行加入“[OBFUSCATE_NAME]”,将字典文件改名为config.ini,开始解密。
同时,黑刀部落网站的“项目中心”栏目也开设了用户提交自己已知程序被混淆的函数列表,这样的话,就能让Dezender变得越来越强了。再也不怕混淆函数了。呵呵。
什么是混淆函数?混淆函数,是从Zend Guard 4.0之后新增的一项功能,能把PHP文件中的所有函数名都进行混淆,混淆后变成以“_OBFUSCATE_”开头的一串“乱码”,这种加密方式感觉有点类似Md5,因为函数名已经不是原来的样子了,所以解密出来的PHP文件是不能正常执行的。黑刀Dezender在4.3版之后,新增加了挂入混淆函数库参与解密的功能,而混淆函数库,就像是一个包含了已知函数名的字典,利用这个字典,来与被混淆了的函数名(就是所谓的“乱码”)进行比对,如果比对结果相同,则解密出来的文件,基本上就可以恢复到加密前的样子了。如果混淆函数库中没有包含该PHP文件中使用的函数名,那么解密结果依然还是会存在“乱码”的。掌握了这个原理,我们就可以去想办法解决问题了。
方式有以下几种:
第一,使用黑刀超级字典生成器产生一个字典,字典的内容可以自己把握,修改字典文件名为“config.ini”,然后打开字典文件,在第一行插入“[OBFUSCATE_NAME]”标记(注意,方括号也是需要的,也就是引号内的内容都要加进去),将字典文件拷贝入黑刀Dezender主程序所在目录,同时注意备份原有的config.ini文件。这种办法费时费力,也要看运气,不过却是最实际的解决办法。
第二,常看别人源代码的朋友,可以把自己已经掌握了的混淆函数的真实函数名提交到我的网站上来。操作步骤:进入网站首页,进入项目中心的“DeZender混淆函数库更新表”,提交。我会定期查看大家提交上来的数据,加入到官方的混淆函数库中,不断的增强和完善官方混淆函数库,大家可以利用黑刀Dezender的自动升级功能对其进行升级!