php-是一个PHP源码加密的来加密源代码
2021-07-10
背景:在商业用途的情况下,可能需要对php源代码进行加密
php-是一个PHP源码加密模块,使用DES算法进行加密。用户可以自定义加密密钥对源代码进行加密,可以很好地保护您的代码。主要应用场景有:
1)代码放在虚拟主机上,有泄露源代码的风险。
2)商业保护,当项目需要收费时,您可以加密您的代码,无需修改。
选择收费的缺点是要花钱,但加密可能更好,性能会更好
选择开源的好处是不需要花钱,安全性或性能可能不如收费的。
选择php-作为php的扩展,可以方便快捷的加密php代码
有这些特点
提供只能在指定机器上运行的功能。要使用这个功能,可以在.c文件中添加可以运行机器的网卡号
密码可用于设置有效期,超过有效期不能使用密码。
可以自定义修改默认密钥,提高被盗可靠性
源码:/php-可参考文档
注意,如果系统有多个php版本,安装方式不同,需要将扩展安装到对应的php版本。示例博客:在多个PHP版本共存的环境下安装到指定版本
系统安装第一步(注意需要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,添加配置项:=.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/,执行php .php,加密结果
可自定义修改默认加密源代码,不易破解
修改加密文件头结构:打开.c文件,找到如下代码:
char encrypt_file_header_sign[] = {
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
};
int = (符号);
自定义修改如下代码(数字范围: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,
};
自定义修改如下代码(数字范围: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,
};
// 修改以 {} 里面的代码(其中的数字的范围为: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} ]秒";
执行命令时php代码加密软件,源代码未加密
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTime.php
结果一共使用了3.880秒
加密代码
斤
¬`'檁
在执行命令源代码加密的情况下
$ ab -n 100 -c 10 http://106.53.5.168:8800/testTimeEncode.php
结果是:使用了4.114秒,比没有加密的情况慢了0.3秒左右
注意使用php-后性能不会下降php代码加密软件,而是会有所提升。
主要原因是php-了解密后的代码,所以第二次访问时不会进行解密操作,所以会比原文件读取速度更快。另外,设置更大的缓存效率会更好,可以通过设置。配置项。
在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.880快3.858秒0.03秒
以上内容希望对大家有所帮助。推进的过程中总会遇到很多问题和瓶颈。写太多业务代码没有方向感。我不知道从哪里开始改进。我整理了一些关于这方面的信息。 ,包括但不限于:分布式架构、高扩展性、高性能、高并发、服务器性能调优、TP6、、、、、、、优化、脚本、微服务等高级高级干货需求可以分享给大家免费,需要点这里PHP高级架构师>>>免费提供各大厂商的实用视频和面试文档