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