不止是搬运工
我们更专注精品分享!

国人PHP加密扩展–PHP Beast配置笔记

首先感谢一下作者开源提供这款优秀的PHP加密扩展!

项目主页:
PHP 5.x.x版本:https://github.com/liexusong/php-beast
PHP 7.x.x分支:https://github.com/liexusong/php-beast/tree/php7

测试环境:
Centos 6.5×64,Nginx 1.10.2,PHP 5.6.28,PHP 7.0.13(因为PHP7之前一直有问题,所以2个版本都做了测试)

安装和配置在项目页都有详细步骤,我这里只记录一些模块的配置。

修改加密后的文件头结构:

打开php-beast-master/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):

0x2b, 0x7e, 0x61, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xi7, 0x10, 0x88, 0x09, 0xcf, 0xef, 0xxc,

修改des模块加密key:

打开php-beast-master/des_algo_handler.c文件,找到以下代码:

static char key[8] = {
0x21, 0x1f, 0xe1, 0x1f,
0xy1, 0x9e, 0x01, 0x0e,
};

自定义修改以下代码(其中的数字的范围为:0-8,字母的范围为:a-f):

0x21, 0x1f, 0xe1, 0x1f,
0xy1, 0x9e, 0x01, 0x0e,

修改base64模块加密key:

打开php-beast-master/base64_algo_handler.c文件,自定义修改以下代码:

static const short base64_reverse_table[256] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};

编译安装PHP Beast:

php-beast-master上传到/usr/local目录下,

# cd /usr/local
# mv /usr/local/php-beast-master /usr/local/php-beast
# cd php-beast
# phpize
# ./configure
# make && make install

查看网卡信息:

执行ifconfig,找到当前使用的网卡,我的测试环境中对应的是eth0,MAC地址为b8-97-5a-64-89-fc

设置只能在指定机器上运行:

打开/usr/local/php-beast/networkcards.c文件,修改为以下代码:

#include <stdlib.h>

/*
* Allow network card. if this list empty, this feature was closed!
*/

char *allow_networkcards[] = {
"b8-97-5a-64-89-fc",    #这里写上指定的mac地址
NULL,
};

其中b8-97-5a-64-89-fc为网卡eth0的MAC地址。

配置PHP支持PHP Beast扩展:

vim /etc/php.ini文件,添加以下代码:

[beast]
extension=beast.so
beast.enable = On
beast.networkcard = "eth0"
;自定义php-beast模块可以使用的缓存
beast.cache_size = 20000

如果是多网卡,可以添加类似以下代码:

beast.networkcard = "eth0,eth1,eth2"

执行service php-fpm restart重启php-fpm。

设置加密项目路径:

打开/usr/local/php-beast/tools/configure.ini文件,修改为以下代码(注意:要加密项目和加密后的项目不要放在一个父目录下):

; source path(要加密项目的路径)
src_path = "/home/www/myfile"

; destination path(保存加密后项目的路径)
dst_path = "/home/www/encrypt"

; expire time(设置项目可使用的时间 (expire 的格式是:YYYY-mm-dd HH:ii:ss),不填写表示无限制使用时间)
expire = ""

; encrypt type(加密的方式,选择项有:DES、AES、BASE64)
encrypt_type = "DES"

加密PHP源码:

# /usr/local/php-beast/tools/encode_files.php

加密/home/www/myfile目录下的所有php文件,加密后的文件放在/home/www/encrypt目录下。

目前可加密的最大PHP文件大小为64kb,解决方法:
分拆单个较大php文件为多个小文件,使用include()或者include_once()或者require()或者require_once()引用分拆出来的小文件。

PHP7下开启opcached后,不能解密PHP,具体表现为前端直接显示密文,目前没有解决办法,欢迎大牛来解决!

 

未经允许不得转载:Opdev.me » 国人PHP加密扩展–PHP Beast配置笔记

支付宝打赏 微信打赏

博主五行缺钱,如果文章对您有帮助,欢迎打赏博主!

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

你拍一,我拍一,小霸王出了学习机!

撸一发!