php解密函数
只是用了一些特殊符号作为array的key和function的参数罢了,没啥好研究的,可以直接把这些特殊符号替换成英文就好了
B. 请教php源码加密及解密问题
用dw编辑器自带的加密工具,或者自己写js加密解密脚本
C. PHP加密解密函数 回答有追加!!!
我这里用到了一个函数,与你上面说的解密函数类似,不过是加密解密都和在一起的
/*
* $string: 明文 或 密文
* $operation:DECODE表示解密,其它表示加密
* $key: 密匙
* $expiry:密文有效期
* */
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0)
{
// 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙
$ckey_length = 4;
// 密匙
$key = md5($key ? $key : 'livcmsencryption ');
// 密匙a会参与加解密
$keya = md5(substr($key, 0, 16));
// 密匙b会用来做数据完整性验证
$keyb = md5(substr($key, 16, 16));
// 密匙c用于变化生成的密文
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
// 参与运算的密匙
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
// 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),解密时会通过这个密匙验证数据完整性
// 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确
$string = $operation == 'DECODE' ? base64_decode(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') {
// substr($result, 0, 10) == 0 验证数据有效性
// substr($result, 0, 10) - time() > 0 验证数据有效性
// substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性
// 验证数据有效性,请看未加密明文的格式
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
} else {
// 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因
// 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码
return $keyc.str_replace('=', '', base64_encode($result));
}
}
D. php源代码被加密了,请问如何解密
php源码被使用zend加密,现阶段还没用解密方法。但是好像现在有这样的一个studio,他们成功地完成了zend和eac的decode
不过是收费的
E. 怎么用php进行3des解密
<?php
classCrypt3Des{
var$key;
functionCrypt3Des($key){
$this->key=$key;
}
functionencrypt($input){
$size=mcrypt_get_block_size(MCRYPT_3DES,'ecb');
$input=$this->pkcs5_pad($input,$size);
$key=str_pad($this->key,24,'0');
$td=mcrypt_mole_open(MCRYPT_3DES,'','ecb','');
$iv=@mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);
@mcrypt_generic_init($td,$key,$iv);
$data=mcrypt_generic($td,$input);
mcrypt_generic_deinit($td);
mcrypt_mole_close($td);
//$data=base64_encode($this->PaddingPKCS7($data));
$data=base64_encode($data);
return$data;
}
functiondecrypt($encrypted){
$encrypted=base64_decode($encrypted);
$key=str_pad($this->key,24,'0');
$td=mcrypt_mole_open(MCRYPT_3DES,'','ecb','');
$iv=@mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);
$ks=mcrypt_enc_get_key_size($td);
@mcrypt_generic_init($td,$key,$iv);
$decrypted=mdecrypt_generic($td,$encrypted);
mcrypt_generic_deinit($td);
mcrypt_mole_close($td);
$y=$this->pkcs5_unpad($decrypted);
return$y;
}
functionpkcs5_pad($text,$blocksize){
$pad=$blocksize-(strlen($text)%$blocksize);
return$text.str_repeat(chr($pad),$pad);
}
functionpkcs5_unpad($text){
$pad=ord($text{strlen($text)-1});
if($pad>strlen($text)){
returnfalse;
}
if(strspn($text,chr($pad),strlen($text)-$pad)!=$pad){
returnfalse;
}
returnsubstr($text,0,-1*$pad);
}
functionPaddingPKCS7($data){
$block_size=mcrypt_get_block_size(MCRYPT_3DES,MCRYPT_MODE_CBC);
$padding_char=$block_size-(strlen($data)%$block_size);
$data.=str_repeat(chr($padding_char),$padding_char);
return$data;
}
}
用法:
$crypt=newCrypt3Des('密钥');
$code="加密后的字符串";
echo$crypt->decrypt($code);
echo出来的就是结果
F. 谁能写个PHP加密解密的函数,能自定义加密解密key
function do_hash($psw) {
$salt = 'fdsafagfdgv43532ju76jM'; //定义salt值够或者随机
return md5($psw . $salt); //返加salt散列
}
-
G. PHP解密Unicode及Escape加密字符串
在json中不支持中文,用它传送中文数据就会出现数据丢失或者乱码,必须在传送前对要发送的字符串进行编码,由于传送过去需要用js进行数据解析,考虑
到js中有unescape函数,故若在php中有个escape函数,对数据进行编码,在客户端用unescape进行
解码,这样就会方便很多。
本文给大家分享一个PHP解密Unicode及Escape加密字符串函数
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
?php
function
uni_decode($s)
{
preg_match_all('/#([0-9]{2,5});/',
$s,
$html_uni);
preg_match_all('/[%]u([0-9a-f]{4})/ie',
$s,
$js_uni);
$source
=
array_merge($html_uni[0],
$js_uni[0]);
$js
=
array();
for($i=0;$icount($js_uni[1]);$i++)
{
$js[]
=
hexdec($js_uni[1][$i]);
}
$utf8
=
array_merge($html_uni[1],
$js);
$code
=
$s;
for($j=0;$jcount($utf8);$j++)
{
$code
=
str_replace($source[$j],
unicode2utf8($utf8[$j]),
$code);
}
return
$code;//$s;//preg_replace('/u([0-9a-f]{4})/ie',
chr(hexdec('1')),
$s);
}
function
unicode2utf8($c)
{
$str=;
if
($c
0x80)
{
$str.=chr($c);
}
else
if
($c
0x800)
{
$str.=chr(0xc0
|
$c6);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x10000)
{
$str.=chr(0xe0
|
$c12);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x200000)
{
$str.=chr(0xf0
|
$c18);
$str.=chr(0x80
|
$c12
0x3f);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
return
$str;
}
$str='%u5927%u5BB6%u597D%uFF0C我是孤魂!br
/';
echo
uni_decode($str);
//
大家好,我是孤魂!这是测试文本!
在网上搜索一把,很多用php实现的escape函数,大同小异
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function
phpescape($str){
preg_match_all(/[x80-xff].|[x01-x7f]+/,$str,$newstr);
$ar
=
$newstr[0];
foreach($ar
as
$k=$v){
if(ord($ar[$k])=127){
$tmpString=bin2hex(iconv(GBK,ucs-2,$v));
if
(!eregi(WIN,PHP_OS)){
$tmpString
=
substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.=%u.$tmpString;
}
else
{
$reString.=
rawurlencode($v);
}
}
return
$reString;
}
以上所述就是本文的全部内容了,希望大家能够喜欢。
H. 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的自动升级功能对其进行升级!
I. php代码解密
两种加密手段,加密手段可谓很简单。解密技术也不复杂,只是有点头昏。
加密方法
1、混淆器加密。就是把各种变量弄得很相似,肉眼难以识别。如$abc,它统一弄成O0OOo0O这样的。所有的变量看起来都差不多。
2、base64加密。把变量混淆以后,再把代码的空格删掉,进行base64加密。用eval()函数运行。
解密技术:
1、把base64加密的,解密之。自己编一下,或者网上有很多在线解密的,很容易解开。把eval函数一层层剥开,去掉。该回车的就回车,有空格的加空格。
2、处理混淆的变量。放在word里面,通过查找和替换工具,逐一把混淆的变量改成你觉得好识别的变量名。
如果代码不长,耐心点,一般都不难对付。至于长一点的代码,抱着永不放弃的理念,发扬愚公移山之精神,铁杆磨成绣花针也是指日可待。
J. php解密 if(function_exists('O0OO0000OO')) { }else { function O0OO0000OO($l1ll1) { $ll1l1 = 1496;
远程读取某个文件
file_get_contents($cryptz_self);
缺少变量$cryptz_self,根本不知道要执行的是什么,最关键的代码是这里:
eval($O0O0OO00O0);
函数O0OO0000OO在这一段儿代码中根本没用上,可能会在远程文件中用到,最关键的数组解密后是这样的:
$ll1l11lll1=array(
'echo'=>"",
'print'=>"",
'printf'=>"",
'die'=>""
);
请尽量支持正版的国产软件,我也作为一个软件开发者对你表示感谢!
祝愉快!