php-是一個PHP源碼加密的來加密源代碼
2021-07-10
背景:在商業(yè)用途的情況下,可能需要對php源代碼進行加密
php-是一個PHP源碼加密模塊,使用DES算法進行加密。用戶可以自定義加密密鑰對源代碼進行加密,可以很好地保護您的代碼。主要應(yīng)用場景有:
1)代碼放在虛擬主機上,有泄露源代碼的風險。
2)商業(yè)保護,當項目需要收費時,您可以加密您的代碼,無需修改。
選擇收費的缺點是要花錢,但加密可能更好,性能會更好
選擇開源的好處是不需要花錢,安全性或性能可能不如收費的。
選擇php-作為php的擴展,可以方便快捷的加密php代碼
有這些特點
提供只能在指定機器上運行的功能。要使用這個功能,可以在.c文件中添加可以運行機器的網(wǎng)卡號
密碼可用于設(shè)置有效期,超過有效期不能使用密碼。
可以自定義修改默認密鑰,提高被盜可靠性
源碼:/php-可參考文檔
注意,如果系統(tǒng)有多個php版本,安裝方式不同,需要將擴展??安裝到對應(yīng)的php版本。示例博客:在多個PHP版本共存的環(huán)境下安裝到指定版本
系統(tǒng)安裝第一步(注意需要root安裝保證權(quán)限)
$ 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,添加配置項:=.so,重啟php-fpm
systemctl restart php-fpm
加密方案進入php--/tool/目錄配置.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--/tool/,執(zhí)行php .php,加密結(jié)果
可自定義修改默認加密源代碼,不易破解
修改加密文件頭結(jié)構(gòu):打開.c文件,找到如下代碼:
char encrypt_file_header_sign[] = {
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
};
int = (符號);
自定義修改如下代碼(數(shù)字范圍:0-8,字母范圍:a-f):
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
修改aes模塊的加密密鑰:
打開php--/.c文件,找到如下代碼:
static uint8_t key[] = {
0x2b, 0x7e, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xi7, 0x10, 0x88, 0x09, 0xcf, 0xef, 0xxc,
};
自定義修改如下代碼(數(shù)字范圍:0-8,字母范圍:a-f):
0x3b, 0x7d, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xi7, 0x10, 0x88, 0x49, 0xcf, 0xef, 0xxc,
修改des模塊加密密鑰:
打開php--/.c文件,找到如下代碼
static char key[8] = {
0x01, 0x1f, 0x01, 0x1f,
0x01, 0x0e, 0x01, 0x0e,
};
// 修改以 {} 里面的代碼(其中的數(shù)字的范圍為:0-8,字母的范圍為:a-f):
加密前后時間對比
測試工具ab,10個線程發(fā)起100個請求
代碼未加密
$stime=microtime(true); //獲取程序開始執(zhí)行的時間
$a = 0;
for($i=0;$i<5000000;$i++){
$a=$a*$i;
}
$etime=microtime(true);//獲取程序執(zhí)行結(jié)束的時間
$total=$etime-$stime; //計算差值
echo "
[頁面執(zhí)行時間:{$total} ]秒";
執(zhí)行命令時php代碼加密軟件,源代碼未加密
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTime.php
結(jié)果一共使用了3.880秒
加密代碼
斤
?`'檁
在執(zhí)行命令源代碼加密的情況下
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
結(jié)果是:使用了4.114秒,比沒有加密的情況慢了0.3秒左右
注意使用php-后性能不會下降php代碼加密軟件,而是會有所提升。
主要原因是php-了解密后的代碼,所以第二次訪問時不會進行解密操作,所以會比原文件讀取速度更快。另外,設(shè)置更大的緩存效率會更好,可以通過設(shè)置。配置項。
在php.ini文件中添加緩存設(shè)置
beast.cache_size=100m
重啟 pfm
$ systemctl restart php-fpm
再次執(zhí)行
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
結(jié)果:執(zhí)行結(jié)果比原來沒有加密的3.880快3.858秒0.03秒
以上內(nèi)容希望對大家有所幫助。推進的過程中總會遇到很多問題和瓶頸。寫太多業(yè)務(wù)代碼沒有方向感。我不知道從哪里開始改進。我整理了一些關(guān)于這方面的信息。 ,包括但不限于:分布式架構(gòu)、高擴展性、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6、、、、、、、優(yōu)化、腳本、微服務(wù)等高級高級干貨需求可以分享給大家免費,需要點這里PHP高級架構(gòu)師>>>免費提供各大廠商的實用視頻和面試文檔