第二种方式处理后的代码是很容易还原的,方法就是把eval换为exit,在CLI(命令提示符)下执行就会显示出eval那个语句对应的等效代码,替换原始语句即可.有时候还原一次后还是eval语句,那需要按照同样的方法反复处理.
②.种PHP的源码加密方式,此加密方法支持任意PHP版.
注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可.
复制代码 代码如下:
php
function encode_file_contents($filename) {$type=strtolower(substr(strrchr($filename,'.'),1));if ('php' == $type is_file($filename) is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码$contents = file_get_contents($filename); // 判断文件是否已经被编码处理$contents = php_strip_whitespace($filename);// 去除PHP头部和尾部标识
$headerPos = strpos($contents,'?php');
$footerPos = strrpos($contents,'?');
return false;
}
//调用函数
$filename = 'dam.php';
encode_file_contents($filename);
echo "OK,加密完成!"
function RandAbc($length = "") { // 返回随机字符串$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";return str_shuffle($str);
$filename = 'index.php'; //要加密的文件
$T_k1 = RandAbc(); //随机密匙1
$vstr = file_get_contents($filename);
$q1 = "O00O0O";
//echo $s;
// 生成 加密后的PHP文件
$fpp1 = fopen('temp_'.$filename, 'w');
fwrite($fpp1, $s) or die('写文件错误');
其实,PHP加密源码方式有很多,譬如,免费的微盾PHP加密,还有 搞的在线加密,只是phpjm更复杂点而已.
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆另外,分享一个 PHP类,它能对 文本的内容进行 二进制加密 与 解密,代码如下:
class text_auth
{
var $n_iter;
function text_auth()
function setIter($n_iter)
$this-n_iter = $n_iter;
function getIter()
return $this-n_iter;
function encrypt($data, $key)
$data_long[0] = $n;
if (($n 1) == 1) {
$data_long[$n] = chr(0);
$n_data_long◆◆;
if ( '' == $key )
$key = '0000000000000000';
$w = array(0, 0);
$j = 0;
$k = array(0, 0, 0, 0);
for ($i = 0; $i $n_data_long; ◆◆$i) {
$k[0] = $key_long[$j];
$k[1] = $key_long[$j ◆ 1];
} else {
$k[0] = $key_long[$j % $n_key_long];
return $enc_data;
function decrypt($enc_data, $key)
$w = array(0, 0);
$j = 0;
$len = 0;
$k = array(0, 0, 0, 0);
$pos = 0;
$this-_decipherLong($enc_data_long[$i], $enc_data_long[$i ◆ 1], $w, $k);if (0 == $i) {
$len = $w[0];
return $data;
function _encipherLong($y, $z, $w, $k)
$sum = (integer) 0;
$n = (integer) $this-n_iter;
while ($n-- 0) {
$y = $this-_add($y,
$sum = $this-_add($sum, $delta);
$z = $this-_add($z,
$w[0] = $y;
$w[1] = $z;
function _decipherLong($y, $z, $w, $k)
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];
for ($i = $n; $i $n - $nmod ◆ $size; ◆◆$i) {$data[$i] = chr(0);
return $n;
$len = strlen($str);
return pack('H' . $len, $str);
$n = strlen($data);
$tmp = unpack('N*', $data);
$j = $start;
foreach ($tmp as $value)
$data_long[$j◆◆] = $value;
return $j;
return pack('N', $l);
function _rshift($integer, $n)
if (0xffffffff $integer || -0xffffffff $integer) {$integer = fmod($integer, 0xffffffff ◆ 1);}
$integer -= 0xffffffff ◆ 1.0;
$integer ◆= 0xffffffff ◆ 1.0;
if (0 $integer) {
$integer = $n;
return $integer;
$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);
$result -= 0xffffffff ◆ 1.0;
$result ◆= 0xffffffff ◆ 1.0;
return $result;
使用方法参考如下:
// 加密过程
view sourceprint?
$str = @file_get_contents($text_file);
require_once S_ROOT . "./text_auth.php";
// 解密过程
view sourceprint
file_put_contents($filename, $str);
$flag = true ?返回原始流数据
②sha1($string,$flag = false)
true ?返回原始流数据
③hash(string $algo,srting $str,bool $flag);
$algo : 算法名称,可通过hash_algos()函数获取所有hash加密的算法
而不同.
true ?返回原始流数据.
④crypt(string $str,$string $salt);
具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关.比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
⑤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);
可以进行解码;
⑦mcrypt_encrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
$ciper:加密算法,mcrypt_list_algorithms()可以获取该函数所有支持的算法
$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:
请注意,在 PHP ⑤⑥0 之前的版本中, 此参数的默认值 为 MCRYPT_DEV_RANDOM.
Note: 需要注意的是,如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态.
$data : 要加密的字符串数据
php源码被使用zend加密,现阶段还没用解密方法.但是好像现在有这样的一个studio,他们成功地完成了zend和eac的decode
不过是收费的
$key?=?"This?is?supposed?to?be?a?secret?key?!!!";?
function?keyED($txt,$encrypt_key)?
{?
$ctr=0;?
$tmp?=?"";?
for?($i=0;$istrlen($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);?
$tmp.=?substr($encrypt_key,$ctr,1)?.?
(substr($txt,$i,1)?^?substr($encrypt_key,$ctr,1));?
return?keyED($tmp,$key);?
function?decrypt($txt,$key)?
$txt?=?keyED($txt,$key);?
$i◆◆;?
$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);?
//加密?
{??
$r?=?"";?
return?$r;?
//解密?
$x1?=?ord($s{$i});?
}??
echo?"
";
以上就是土嘎嘎小编为大家整理的php加密代码破解相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!