1. 程式人生 > >PHP原始碼加密

PHP原始碼加密

今天在客戶伺服器上,安裝產品的時候發現,客戶的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

引用: <?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引擎,可以為大多數作業系統提供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來說各有優缺點,因此在選擇產品時需要根據專案及程式碼情況來決定採用何種工具進行處理。

原文:https://blog.csdn.net/kof820/article/details/5465910