提供一种 PHP 源代码加密和解密的方法

学习笔记 马富天 2017-09-21 20:53:59 142 0

【摘要】之前记录过一篇文章,也是关于 PHP 源代码加密和解密的方法,提供了比较完整的加密解密步骤,而本文将再次的给出一个经典的 PHP 源代码加密解密的实例。

之前写过的 PHP 源代码加密解密文章:

http://www.mafutian.net/287.html

首先假设文件 1.php 里面的内容是:

  1. echo "PHP Source code encoding";

而这个时候,我们不希望有人能直接看到源代码,然后下面给出加密函数:

  1. function RandAbc($length = "") 
  2. {
  3. 	// 返回随机字符串
  4.  	$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";  
  5.  	return str_shuffle($str);  
  6. }   
  7. $filename = '1.php';	//	要加密的文件  
  8. $T_k1 = RandAbc();	//	随机密匙1  
  9. $T_k2 = RandAbc();	//	随机密匙2  
  10. $vstr = file_get_contents($filename);  
  11. $v1 = base64_encode($vstr);  
  12. $c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。  
  13. $c = $T_k1.$T_k2.$c;
  14. $q1 = "O00O0O";  
  15. $q2 = "O0O000";  
  16. $q3 = "O0OO00";  
  17. $q4 = "OO0O00";  
  18. $q5 = "OO0000";  
  19. $q6 = "O00OO0";  
  20. $s = '$'.$q6.'=urldecode("n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'.$q2.',0,$'.$q5.'))));').'"));';  
  21. $s = '<?php '."\n".$s."\n".' ?>';  
  22. //	echo $s;  
  23. //	生成 加密后的PHP文件  
  24. $fpp1 = fopen('temp_'.$filename, 'w');
  25. fwrite($fpp1, $s) or die('写文件错误');

以上只要输入需要加密的 php 文件,即 1.php ,然后就会生成一个加密后的文件 temp_1.php ,此时里面生成的内容是:

  1. $O00OO0=urldecode("n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("JE8wTzAwMD0iQXNQT1FSTEVnd3hOcGtvWUhuaUlXY3F1TXZGZWhteXpTSlhHYVRCYmpsZFVWRHJ0ZktaQ3VNak5VbE9BUmlZZVBmdG1xYWJUckx6dkVvWHNjd1prQmRoRldTSEdLSnhnSXB5VkNuRFFqcDlpV3F1UnBVdGVRUkpKbTJjb1RRZFVCWHVSZzI5MUx3ZUpURmVvREZnUkRyNUtHMmxQR3dMYk5pPT0iO2V2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksJE9PME8wMCgkTzBPMDAwLDAsJE9PMDAwMCkpKSk7"));
请输入图片名称

很显然,看起来特别的高级、特别复杂,相信从来没有学过 PHP 或者是刚刚接触 PHP 的人一定会觉得这个是无法破解啦。看到加密函数中还包含了随机的秘钥,而且是两个随机秘钥:随机秘钥1,随机秘钥2,想当然的就以为这是无法破解的,在这里我要说 no,no,no,马上给出破解方法:

  1. //	$s 就是 PHP 源码,$O0O000 指的就是如上加密后的内容
  2. $s = base64_decode(strtr(substr($O0O000,52*2),substr($O0O000,52,52),substr($O0O000,0,52)));

然后我们执行一下:

请输入图片名称请输入图片名称

看看,以上是不是已经将密文进行解密啦,对于本文所引用的方法,还是只能用来糊弄一些非本行技术人员的人的,对于业内人士来说还是可以寻求解密办法的~~

版权归 马富天PHP博客 所有

本文标题:《提供一种 PHP 源代码加密和解密的方法》

本文链接地址:http://www.mafutian.net/324.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 PHP 语言中下载或导出 csv 文件时出现中文乱码的解决办法 》 下一篇《 使用 PHP 实现插入排序算法 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多