PHP 原始碼加密 (zendGuard和ionCube)
二、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的
*另外需要值得注意的是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環境下沒有發現該問題。
三、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引擎,可以為大多數
對於之前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來說各有優缺點,因此在選擇產品時需要根據專案及程式碼情況來決定採用何種工具進行處理。