有時候公司要求加密php 原始碼
因為公司的程式碼會部署到代理商上, 所以很有可能程式碼被盜取。那麼就要把程式碼加密,在加密的工具如何選擇,
有些收費的,也有些開源。
選擇收費的 缺點是 需要花錢,但是可能加密性好一點,在效能方面會好一點
選擇開源的 優點不需要 花錢,可能效能不是很好,不過也可以使用。
選擇 php-beast 為php一個擴充套件,可以方便快捷為php程式碼進行加密處理
有這幾個特點
- 提供只能在指定的機器上執行的功能。要使用此功能可以在 networkcards.c 檔案新增能夠執行機器的網路卡號
- 程式碼使用可以設定有效期,超過這個有效期程式碼就不能使用了
- 可以自定義修改預設的的金鑰,提高了被盜取的可靠性
原始碼:https://github.com/liexusong/php-beast 可以參照文件
注意如果系統有多個php 版本,安裝方法有所不同,需要安裝擴充套件到對應的php 版本 例子 部落格:多 PHP 版本共存的環境下安裝 Swoole 到指定版本
Linux 系統安裝 步驟1 (注意需要root 安裝保證許可權)
$ wget https://github.com/liexusong/php-beast/archive/master.zip
$ unzip master.zip
$ cd php-beast-master
$ phpize
$ ./configure
$ sudo make && make install
編譯好之後修改php.ini配置檔案(可能php.ini 配置 有cli和fpm)cli 就命令列執行php, 加入配置項: extension=beast.so, 重啟php-fpm
確定beast擴充套件是否載入上
加密方案 進入 php-beast-master/tool/ 目錄配置 configure.ini 檔案
#source path
src_path = ""
#destination path 加密的php 放到的目錄
dst_path = ""
#expire time 原始碼使用有效期
expire = "2021-02-13 14:48:12"
#encrypt type 加密型別 可以有 selection: DES, AES, BASE64
encrypt_type = "DES"
進入 php-beast-master/tool/ 執行 php encode_files.php,加密後的結果
![PHP 原始碼加密學習]
可以定製修改 預設的加密原始碼這個不容易給破解
- 修改加密後的檔案頭結構:開啟header.c檔案,找到以下程式碼:
int encrypt_file_header_length = sizeof(encrypt_file_header_sign);char encrypt_file_header_sign[] = { 0xe8, 0x16, 0xa4, 0x0c, 0xf2, 0xb2, 0x60, 0xee };
自定義修改以下程式碼(其中的數字的範圍為:0-8,字母的範圍為:a-f):0xe8, 0x16, 0xa4, 0x0c, 0xf2, 0xb2, 0x60, 0xee
- 修改aes模組加密key:
開啟php-beast-master/aes_algo_handler.c檔案,找到以下程式碼:
自定義修改以下程式碼(其中的數字的範圍為:0-8,字母的範圍為:a-f):static uint8_t key[] = { 0x2b, 0x7e, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xi7, 0x10, 0x88, 0x09, 0xcf, 0xef, 0xxc, };
0x3b, 0x7d, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xi7, 0x10, 0x88, 0x49, 0xcf, 0xef, 0xxc,
- 修改des模組加密key:
開啟php-beast-master/des_algo_handler.c檔案,找到以下程式碼static char key[8] = { 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e, }; // 修改以 {} 裡面的程式碼(其中的數字的範圍為:0-8,字母的範圍為:a-f):
加密前 和 加密後的時間的對比
本作品採用《CC 協議》,轉載必須註明作者和本文連結