首页 > 网络资讯 > 技术支持 >
PHP代码加密(Encode)较为常用的工具介绍-ZendGuard与ionCube
分享至:0
2017-03-27 11:55:21     来源:互联网     点击:
导读: 1-概述PHP代码属于开源WEB代码,不需要编译,属于解释型语言。(即在WebServer中追加相应扩展名的解释程序即可完成对代码的分析处理)。根... 1- 概述

  PHP代码属于开源WEB代码,不需要编译,属于解释型语言。(即在WebServer中追加相应扩展名的解释程序即可完成对代码的分析处理)。
  根据PHP语言解释型的特性,结合个项目需求,我们就可以使用php.exe(PHP解释程序)对PHP代码进行解释应用,使得PHP不仅适用于WEB环境也适用于本地处理,如:GTK等。
  我手中有一项目采用Delphi通道(PIP)方式调用phpexe解释器,解释PHP代码完成WEB中的过程。
  但是另一方面弊端又体现出来,由于PHP采用开源方式,不同用户很容易看到使用PHP语言所篇写的源程序,对源程序进行分析,很容易的得到数据连接,处理流程,甚至服务器名等重要信息,同样的也不利于软件开发商的版权保护。因此就必须对PHP源代码进行加密授权处理,即(Encode化与License授权)
  当前市场上较流行的对PHP进行上述加密授权的软件主要有二种:
  (1)Zend公司的
ZendGuard。----当前最新版本5.0.1(2008/06/17)
  (2)ionCube公司的
ionCube PHP Encode。----当前最新版本6.5(2008/06/17)
  对于这两各较常用的Encode软件其二者有着不同的功能与各自的优点。

2- ZendGuard
  ZendGuard只能对带有PHP标记或源码的文件进行加密(如:.php,inc等),对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。
  支持PHP4.2.X~5.2.X版本的加密。
  使用的ZendOptimizer(PHP引擎)可以提高源码20~50%以上的速度优化,结合ZendGuard可以提高至50%以上的性能速度优化,且ZendOptimizer可以安装于当前较多主流系统中。(在使用ZendGuard加密时可选择ZendOptimizer版本进行更多的优化处理),另外,ZendGuard只能用于配置了ZendOptimizer的环境中,不能独立运行。(必须在php.ini文件中进行配置)
  *当前Zend已被IBM合并当前的ZendGuard已与Eclipse结合。

clip_image002
clip_image004
clip_image006
  *另外需要值得注意的是ZendGuard在PHP4下的错误,对于PHP4的绝对路径及相对路径在加密时会出现较大的差别。
  在PHP4.4.1环境下,如有如下两个文件:
  Test.php

<?php require_once("inc/test1.php"); ?>

  inc/Test1.php

<?php echo realpath(dirname(__FILE__)); ?>

  不进行加密的前提下,显示的结果是:

C:\LocalWeb\zendtest\inc

  但是加密后却显示:

C:\LocalWeb\zendtest-encode\zendtest

  可以发现经过ZendGuard加密后inc目录被去掉了,显示的是被包含之前的文件的地址。(即__FILE__被当成临时常量显示了出来)。
  *该问题经测试,在PHP5.2.6环境下没有发现该问题。

  3- ionCube PHP Encode
  ionCube PHP Encode,由ionCube开发,用于对PHP或非PHP文件进行加密工作。ionCube在功能方面经过测试可以优胜于Zend公司的ZendGuard,不仅支持期限,注册码,等加密方式,还支持对IP,MAC地址等复杂的加密方式。另外,对于ionCube来说不仅可以加密带有PHP标记或源码的php文件还可以对非php文件的以text方式保存的文件进行加密操作,如xml,js,css等。(但是读写时必须使用ionCube所提供的读入API进行读写操作。)
  可加密的PHP版本从PHP4.0.6~5.2.X(比ZendGuard高2个级别)
  ionCube与Zend一样,为了提高PHP性能优化也提供了相应的PHP引擎,可以为大多数操作系统提供PHP优化功能,但是可惜的是,至今未提供Windows版本的PHP引擎。
  对于之前ZendGuard中所说的PHP4环境下路径问题,在ionCube中没有出现,可以看出ionCube相对稳定。
  对于ionCube来说,对带有PHP标记或源码的文件采用压缩加密方式处理,对于非php的文本类文件则采用加密方式处理。在读入时必须使用“ioncube_read_file/ ioncube_write_file”读写文件。因此在使用ionCube加密前需要对相应的PHP代码进行改造后才能使用。

clip_image008
clip_image010
clip_image012
clip_image014
clip_image016
clip_image016[1]
clip_image018
clip_image020

  4- ZendGuardionCube比较结果
*以下比较结果项是个人根据自我判断产生不做为官司方比较结果。

比较项目
ZendGuard
ionCube PHP Encode
比较结果
(强项)
PHP版本 PHP4.2.X~5.2.X PHP4.0.6~5.2.X ionCube
PHP引擎

ZendOptimizer
(支持主流系统)

ionCube PHP Accelerator
(不包括windows的主流系统)

ZendOptimizer
支持文件格式 php,inc或只能含有php标记代码的文件进行encode化处理。

php,inc,xml,js,.css可对所有以文本形式保存的文件进行处理。对php及含有php标记的文件以encode方式加密(二进制),对非php文件采用Encrypt(加密方)式进行加密处理。但调用时需要采用其提供的API读入文件解密后使用。

ionCube
IP地址加密 不支持 支持 ionCube
物理MAC加密 不支持 支持 ionCube
授权控制 支持 支持 ZendOptimizer
代码时间限制 支持 支持 ZendOptimizer
销售价格
(加密软件)
600美元约5160元(人民币) 约5850元(人民币) ZendOptimizer
引擎价格 免费 免费 ZendOptimizer
PHP4与PHP5加密兼容问题 加密后会产生路径问题 不会产生路径问题 ionCube
配置情况 需配置php.ini文件运行于相应Optimizer下

(1)固定方式,配置php.ini文件;
(2)绑定方式,加密时自动绑定解密用dll文件(生成ioncube目录)不需配置php.ini文件。

ionCube

*可以看出对于ionCube与ZendGuard来说各有优缺点,因此在选择产品时需要根据项目及代码情况来决定采用何种工具进行处理。