PHP 源代码加密解密介绍

学习笔记 马富天 2017-07-19 19:17:48 99 0

【摘要】很多时候我们自己开发一套完整的程序,而仅供商业使用,但是我们并不想对外开源,为了不让自己辛苦开发的系统公之于众,则需要对其进行加密,这个时候对源代码的加密是至关重要了,本文记录一下使用 PHP 内部函数对 PHP 源代码进行加密过程(含解密)。

假设有一个文件 1.php ,里面的内容是:

请输入图片名称
  1. var_dump('This is PHP ');

而后我们需要对这个文件进行加密,加密代码如下:

  1. header('content-type:text/html;charset=utf-8');
  2. function encode_file_contents($filename) {  
  3.  $type=strtolower(substr(strrchr($filename,'.'),1));  
  4.  if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码  
  5.      $contents = file_get_contents($filename); // 判断文件是否已经被编码处理  
  6.      $contents = php_strip_whitespace($filename);   
  7.      // 去除PHP头部和尾部标识  
  8.      $headerPos = strpos($contents,'<?php');  
  9.      $footerPos = strrpos($contents,'?>');  
  10.      $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);  
  11.      $encode = base64_encode(gzdeflate($contents)); // 开始编码  
  12.      echo $encode;
  13.      $encode = '<?php'."\n eval(gzinflate(base64_decode("."'".$encode."'".")));\n\n?>";   
  14.      return file_put_contents($filename, $encode);  
  15.  }  
  16.  return false;  
  17. }   
  18. //调用函数  
  19. $filename = '1.php';  
  20. encode_file_contents($filename);  
  21. echo "OK,加密完成!" 

对文件 1.php 执行加密代码,这样 1.php 文件就被加密了,里面的内容被改写成如下:

请输入图片名称

而 1.php 文件的执行结果依旧是有效的:

请输入图片名称

那么如何解密呢,如果只对文件 1.php 加密一次,则直接将:

  1. eval(gzinflate(base64_decode('U1AoSyyKTynNLdBQD8nILFYAogCPAAV1TWsFezsA')));

中的 eval 改成 echo ,执行 1.php 即可:

  1. echo(gzinflate(base64_decode('U1AoSyyKTynNLdBQD8nILFYAogCPAAV1TWsFezsA')));

效果如图:

请输入图片名称

对于多次加密的函数则,依旧将 eval 改成 echo 即可。但是人工操作会比较麻烦,所以还是使用代码来解密:

  1. $a = "eval(gzinflate(base64_decode('这里面放经过若干次加密后的 BASE64 代码')));";
  2. function decodephp($a)
  3. {
  4.     $max_level = 300; //	最大层数
  5.     for ($i = 0; $i < $max_level; $i++) {
  6.         ob_start();
  7.         eval(str_replace('eval', 'echo', $a));
  8.         $a = ob_get_clean();
  9.         if (strpos($a, 'eval(gzinflate(base64_decode') === false) {
  10.             return $a;
  11.         }
  12.     }
  13. }
  14. echo decodephp($a);

这样就是实现的对 PHP 源代码进行加密解密,当然这种加密方式并不是最为安全的,因为就算开发者将源代码通过这种加密方式加密 N 多次,还是很容易就能够被还原回去。本文代码本人亲测有效。

版权归 马富天PHP博客 所有

本文标题:《PHP 源代码加密解密介绍》

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

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

0

0

上一篇《 使用 PHP 判断当前用户是否使用微信内部浏览器访问页面 》 下一篇《 webkit 内核的浏览器滚动条 css 样式 》

暂无评论

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

TOP10

  • 浏览最多
  • 评论最多