千家信息网

PHP 源码加密的实例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家介绍PHP 源码加密的实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。背景:在商用的情况下 可能需要加密 php 源码php-beast 是一个 PHP 源码
千家信息网最后更新 2026年11月01日PHP 源码加密的实例分析

这篇文章给大家介绍PHP 源码加密的实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

背景:在商用的情况下 可能需要加密 php 源码

php-beast 是一个 PHP 源码加密的模块,其使用 DES 算法加密,用户可以自定义加密的 key 来加密源代码,可以很好的保护你的代码。主要应用情景有:

1) 代码放在虚拟主机上,有泄漏源码的危险。

2) 商业保护,当项目需要收费时就可以加密你的代码不被修改。

选择收费的 缺点是 需要花钱,但是可能加密性好一点,在性能方面会好一点

选择开源的 优点不需要 花钱,可能安全性或者性能比不上收费的

选择 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, BASE64encrypt_type = "DES"

进入 php-beast-master/tool/ 执行 php encode_files.php,加密后的结果

可以定制修改 默认的加密源码这个不容易给破解

修改加密后的文件头结构:打开 header.c 文件,找到以下代码:

char encrypt_file_header_sign[] = { 0xe8, 0x16, 0xa4, 0x0c, 0xf2, 0xb2, 0x60, 0xee};

int encrypt_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 次请求

  1. 代码没有加密

$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 秒

加密后的代码

斤 ¬`'檁

在 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 秒

关于PHP 源码加密的实例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

加密 代码 源码 文件 范围 结果 配置 情况 时间 版本 有效 命令 字母 性能 数字 有效期 模块 缓存 收费 运行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 深圳九邦互联网科技有限公司 互联网科技工作委员会主任 中关村互联网 科技集团 互联网科技活动banner 科技互联网政务服务 华中科技大学互联网 互联网巨头投资的硬核科技 汉立互联网科技有限公司联系电话 博兴的互联网电子科技公司 科技互联网大厂 企晟互联网信息科技有限公司 电子商务与互联网科技的关系 广州互联网高科技取餐柜 2021世界互联网领先科技成果发布 扫呗互联网科技有限公司 昆明中奇联合互联网科技 吉林省码上互联网科技电话 唯美互联网科技 科技发展第三阶段互联网时代 A股互联网金融科技公司 互联网科技股票 远信互联网科技 兼蜜互联网科技 新华互联网科技校企合作 互联网科技与大数据专业 长沙茂晟互联网科技有限公司 元气玛特互联网科技公司是外包吗 互联网科技品牌 黑龙江互联网科技公司
0