今天在客户服务器上,安装产品的时候发现,客户的php源码是用ioncube加密的, 而我们使用的是zend guard,安装了zend optimizer后发现有冲突。。
下面是网上看到的关于这两种加密工具的对比。
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软件其二者有着不同的功能与各自的优点。
二、Zend Guard
Zend Guard只能对带有PHP标记或源码的文件进行加密(如:.php,inc等),对于其他不带有PHP标记的文本方式保存的文件不能进行加密操作,支持期限,注册码。
支持PHP4.2.X~5.2.X版本的加密。
使用的ZendOptimizer(PHP引擎)可以提高源码20~50%以上的速度优化,结合ZendGuard可以提高至50%以上的性能速度 优化,且ZendOptimizer可以安装于当前较多主流系统中。(在使用ZendGuard加密时可选择ZendOptimizer版本进行更多的优 化处理),另外,ZendGuard只能用于配置了ZendOptimizer的环境中,不能独立运行。(必须在php.ini文件中进行配置)
*另外需要值得注意的是ZendGuard在PHP4下的错误,对于PHP4的绝对路径及相对路径在加密时会出现较大的差别。
在PHP4.4.1环境下,如有如下两个文件:
Test.php
inc/Test1.php
不进行加密的前提下,显示的结果是: C:/LocalWeb/zendtest/inc
但是加密后却显示: C:/LocalWeb/zendtest-encode/zendtest
可以发现经过ZendGuard加密后inc目录被去掉了,显示的是被包含之前的文件的地址。(即__FILE__被当成临时常量显示了出来)。
*该问题经测试,在PHP5.2.6环境下没有发现该问题。
三、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代码进行改造后才能使用。
四、Zend Guard与ionCube比较结果
以下比较结果项是个人根据自我判断产生不做为官司方比较结果。
比较项目 |
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来说各有优缺点,因此在选择产品时需要根据项目及代码情况来决定采用何种工具进行处理。