php-beastPHP 源碼加密模塊
編譯安裝如下:
$ 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配置文件, 加入配置項(xiàng): extension=beast.so, 重啟php-fpm
溫馨提示: 可以設(shè)置較大的緩存提高效率
配置項(xiàng):
beast.cache_size = size
beast.log_file = "path_to_log"
beast.log_user = "user"
beast.enable = On
支持的模塊有:
1. AES 2. DES 3. Base64
通過測試環(huán)境:
Nginx + Fastcgi + (PHP-5.2.x ~ PHP-5.6.x)
注意
如果出現(xiàn)502錯誤,一般是由于GCC版本太低導(dǎo)致,請先升級GCC再安裝本模塊。
怎么加密項(xiàng)目
加密方案1
安裝完 php-beast 后可以使用 tools 目錄下的 encode_files.php 來加密你的項(xiàng)目。使用 encode_files.php 之前先修改 tools 目錄下的 configure.ini 文件,如下:
; source path src_path = "" ; destination path dst_path = "" ; expire time expire = "" ; encrypt type (selection: DES, AES, BASE64) encrypt_type = "DES"
src_path 是要加密項(xiàng)目的路徑,dst_path 是保存加密后項(xiàng)目的路徑,expire 是設(shè)置項(xiàng)目可使用的時間 (expire 的格式是:YYYY-mm-dd HH:ii:ss)。encrypt_type是加密的方式,選擇項(xiàng)有:DES、AES、BASE64。 修改完 configure.ini 文件后就可以使用命令 php encode_files.php 開始加密項(xiàng)目。
加密方案2
使用beast_encode_file()函數(shù)加密文件,函數(shù)原型如下:
beast_encode_file(string $input_file, string $output_file, int expire_timestamp, int encrypt_type)。
1. $input_file: 要加密的文件 2. $output_file: 輸出的加密文件路徑 3. $expire_timestamp: 文件過期時間戳 4. $encrypt_type: 加密使用的算法(支持:BEAST_ENCRYPT_TYPE_DES、BEAST_ENCRYPT_TYPE_AES)
制定自己的php-beast
php-beast 有多個地方可以定制的,以下一一列出:
1. 使用 header.c 文件可以修改 php-beast 加密后的文件頭結(jié)構(gòu),這樣網(wǎng)上的解密軟件就不能認(rèn)識我們的加密文件,就不能進(jìn)行解密,增加加密的安全性。
2. php-beast 提供只能在指定的機(jī)器上運(yùn)行的功能。要使用此功能可以在 networkcards.c 文件添加能夠運(yùn)行機(jī)器的網(wǎng)卡號,例如:
char *allow_networkcards[] = {
"fa:16:3e:08:88:01",
NULL,
};
這樣設(shè)置之后,php-beast 擴(kuò)展就只能在 fa:16:3e:08:88:01 這臺機(jī)器上運(yùn)行。另外要注意的是,由于有些機(jī)器網(wǎng)卡名可能不一樣,所以如果你的網(wǎng)卡名不是 eth0 的話,可以在 php.ini 中添加配置項(xiàng): beast.networkcard = "xxx" 其中 xxx 就是你的網(wǎng)卡名,也可以配置多張網(wǎng)卡,如:beast.networkcard = "eth0,eth1,eth2"。
3. 使用 php-beast 時最好不要使用默認(rèn)的加密key,因?yàn)閿U(kuò)展是開源的,如果使用默認(rèn)加密key的話,很容易被人發(fā)現(xiàn)。所以最好編譯的時候修改加密的key,aes模塊 可以在 aes_algo_handler.c 文件修改,而 des模塊 可以在 des_algo_handler.c 文件修改。
開啟debug模式
可以在configure時加入 --enable-beast-debug 選項(xiàng)來開啟debug模式。開啟debug模式后需要在php.ini配置文件中加入配置項(xiàng):beast.debug_path 和 beast.debug_mode。beast.debug_mode 用于指定是否使用debug模式,而 beast.debug_path 用于輸出解密后的php腳本源碼。這樣就可以在 beast.debug_path 目錄中看到php-beast解密后的源代碼,可以方便知道擴(kuò)展解密是否正確。
函數(shù)列表
1. beast_encode_file(): 用于加密一個文件
2. beast_avail_cache(): 獲取可以緩存大小
3. beast_support_filesize(): 獲取beast支持的最大可加密文件大小
4. beast_file_expire(): 獲取一個文件的過期時間
5. beast_clean_cache(): 清空beast的所有緩存(如果有文件更新, 可以使用此函數(shù)清空緩存)
