学习php代码两年了,收货颇多,虽然一直无法深入,但遇到的一般问题也都可以自己搞定.这里就说说我对php代码加密的看法吧.自己感觉还是有必要记录下的,年纪大了嘛,有些事情总是记录下的好,免得过后忘记了,还要费劲心力去研究,结果发现是徒然或者是之前得出过的结论.
个人对于php的理解来说,还是建议大家把自己的代码开源的,毕竟可以为更多的人所用,而且这也就是为什么php能不断发展壮大的原因.可是在这个梦幻的现实世界,你总得先填饱了肚子活着才行.这是给自己找的不开源的原因吧.也经常看到某些人把别人的版权信息一改就重新发布或者收费的,虽然我也这么办过,但也是朋友间交流使用.
理由找到了,我们就步入正题,探讨下php源代码的加密,目前考虑到的代码加密方式有三种:
1.zend类加密扩展
这样的典范就是zend的guard了,可以对代码进行编译形成无法识别的代码.同时需要服务器平台支持加密扩展.因为采用了扩展方式,切使用c语言开发并自带优化,这样的加密还是不影响代码的运行效率的.这样的加密方式有很多软件采用,就不指明了.
但这里说说zend加密的几个注意事项.zend加密是区分php版本的,php 5.3及以上平台的是Zend Loader,5.3版本以下平台的是Zend Optimizer,且两种互不兼容,而且采用的加密工具也不一样.目前使用较多的是5.3以下版本,好处是支持所有的服务器平台环境,坏处是现在加密的代码可以被破解,但是大规模的项目破解后的代码需要有一定技术水平的人修复后才可以使用.5.3及以上的好处是代码无法被破解,坏处也就是硬伤是无法在win+apache这样的平台上运行.所以具体采用那种方式仁者见仁智者见智,同时这两种加密的软件是收费的,当然我也不会告诉你这两种都有破解版.
2.远程服务器加密
其实这个不算是加密办法,但是也起到了防破解的作用.就是自己搭建一台服务器,然后做好安全设置,把自己产品里面用到的核心代码做成远程服务调用接口(很多淘宝客软件采用此方式).只要保证服务器不被攻陷,这样使用者永远获取不到核心代码,这样也很容易区分用户是否进行授权了.
3.php代码自加密
就是采用某种算法,对正常的需要运行的php代码进行替换/移位等操作,而这种算法也是php写成的.此方式防君子不防小人.因为本身是php写的,要让php引擎识别就要进行解密,所以解密算法要写到加密后的代码中,因此只要不怕麻烦,总是可以得到源码.不过次方式好处是加密成本低,当然也易破解,运行效率差等.不过这个办法还是有待大家研究的,如果代码写的好,可以采用$1I 或$0O这样变量及函数名,多次调用加密函数等,降低人工可分辨的程度和破解难度.