加密函数
<?php
function encryption($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,'?>');
$contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);
$encode = base64_encode(gzdeflate($contents)); // 开始编码
$encode = '<?php'."\n eval(gzinflate(base64_decode("."'".$encode."'".")));\n\n?>";
return file_put_contents($filename, $encode);
}
return false;
}
//调用函数
$filename = 'index.php';//待加密的文件
encryption($filename);
echo "OK,加密完成!"
?>
解密函数
<?php
//已经加密的文件内容
$data = "eval(gzinflate(base64_decode('40pNzshXUCouKcrMS1eyVrC3AwA=')));";
function decrypt($data){
$max_level = 300; //最大层数
for ($i = 0; $i < $max_level; $i++) {
ob_start();
eval(str_replace('eval', 'echo', $data));
$data = ob_get_clean();
if (strpos($data, 'eval(gzinflate(base64_decode') === false) {
return $data;
}
}
}
echo decrypt($data);
//得到echo "string";
?>
2 条评论
博主太厉害了!