背景:在商用的情况下可能须要加密php源码
php-beast是一个PHP源码加密的模块,其使用DES算法加密,用户可以自定义加密的key来加密源代码,可以挺好的保护你的代码。主要应用情境有:1)代码放到虚拟主机上php源码本地安装教程php源码本地安装教程,有泄露源码的危险。2)商业保护,当项目须要收费时就可以加密你的代码不被更改。
选择收费的缺点是须要花钱,而且可能加密性好一点,在性能方面会好一点
700粉丝福利安排一波,工作中打算的,你们随意拿选择开源的优点不须要花钱,可能安全性或则性能比不上收费的
选择php-beast为php一个扩充,可以便捷快捷为php代码进行加密处理
有这几个特征
提供只能在指定的机器上运行的功能。要使用此功能可以在networkcards.c文件添加才能运行机器的网卡号
代码使用可以设置有效期,超过这个有效期代码就不能使用了
可以自定义更改默认的的秘钥,增强了被窃取的可靠性
源码: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
systemctl restart php-fpm
加密方案步入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/执行phpencode_files.php,加密后的结果
可以订制更改默认的加密源码这个不容易给破解
更改加密后的文件头结构:打开header.c文件,找到以下代码:
char encrypt_file_header_sign[] = {
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
};
intencrypt_file_header_length=sizeof(encrypt_file_header_sign);
自定义更改以下代码(其中的数字的范围为:0-8,字母的范围为:a-f):
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
更改aes模块加密key:
打开php-beast-master/aes_algo_handler.c文件,找到以下代码:
static uint8_t key[] = {
0x2b, 0x7e, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xi7, 0x10, 0x88, 0x09, 0xcf, 0xef, 0xxc,
};
自定义更改以下代码(其中的数字的范围为:0-8,字母的范围为:a-f):
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):
加密前和加密后的时间的对比
测试工具ab,10个线程发起100次恳请
代码没有加密
$stime=microtime(true); //获取程序开始执行的时间
$a = 0;
for($i=0;$i<5000000;$i++){
$a=$a*$i;
}
$etime=microtime(true);//获取程序执行结束的时间
$total=$etime-$stime; //计算差值
echo "
[页面执行时间:{$total} ]秒";
在linux执行命令源码没有加密的情况
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTime.php
结果一共使用了3.880秒
加密后的代码
斤
¬`'檁
²v|ⓡ_}ʁ«½¿aĹ稖g¼a¿u·q 3dSR ¤1r¢zNu¡Vjq ē7M ¤*[root@localhost public]# Xshell
在linux执行命令源码加密的情况
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
结果是:使用了4.114秒,比没有加密的情况慢了0.3秒左右
注意使用了php-beast以后性能不会增长,但是会有所提高。
主要诱因是php-beast缓存了解密后的代码,所以二次访问时不会再进行揭秘操作,所以会比原先读文件更快。另外设置较大的缓存效率会更好,可以通过beast.cache_size配置项来设置。
在php.ini文件降低缓存设置
beast.cache_size=100m
重启pfm
$ systemctl restart php-fpm
再度执行
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
结果:执行结果是3.858秒比原先没有加密3.880快了0.03秒
大厂必备笔试题,来拿吧!
以上内容希望帮助到你们,好多PHPer在进阶的时侯总会碰到一些问题和困局,业务代码写多了没有方向感,不晓得该从哪里入手去提高,对此我整理了一些资料,包括但不限于:分布式构架、高可扩充、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点中级进阶干货须要的可以免费分享给你们,须要的可以加入我的官方群点击此处。
暂无评论内容