Linux编译安装:编译好之后修改php.ini配置文件
温馨提示:这篇文章已超过565天没有更新,请注意相关的内容是否还可用!
php-beast.png
前言
首先说说为什么要用PHP-Beast?
有之后我们的代码会放在代理商上,所以很有也许代码被盗取,或者我们写了一个商业平台并且不期望代码开源,所以这之后就必须加密我们的代码。
此外PHP-Beast是完全免费和开源的,当其不能完成满足你的意愿时,可以设置其代码而满足你的要。
编译安装如下
注意:如果你必须使用,首先设置key。可以参考下文
Linux编译安装:
$ 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配置文件,加入配置项:=beast.so,重启php-fpm。
配置项:
beast.cache_size = size
beast.log_file = "path_to_log"
beast.log_user = "user"
beast.enable = On
beast.支持参数:
1. DEBUG
2. NOTICE
3. ERROR
支持的模块有:
1. AES
2. DES
3. Base64
通过测试环境:
Nginx + Fastcgi + (PHP-5.2.x ~ PHP-7.1.x)
如何加密你的项目加密方案1:
安装完php-beast后可以使用tools目录下的.php来加密你的项目。使用.php之前先设置tools目录下的.ini文件,如下:
; source path
src_path = ""
; destination path
dst_path = ""
; expire time
expire = ""
; encrypt type (selection: DES, AES, BASE64)
encrypt_type = "DES"
是要加密项目的模式,是保存加密后项目的模式,是设定项目可使用的时间(的格式是:YYYY-mm-ddHH:ii:ss)。是加密的方法,选择项有:DES、AES、。修改完.ini文件后就可以使用命令php.php开始加密项目。
加密方案2:
使用()变量加密文件,函数原型如下:
beast_encode_file(string $input_file, string $output_file, int expire_timestamp, int encrypt_type)。
$:要加密的文件$:输出的加密文件模式$:文件过期时间戳$:加密使用的算法(支持:ES、ES)制定自己的php-beast
php-beast有多个地方可以定制的,以下一一列举:
使用.c文件可以设置php-beast加密后的文件头结构,这样网上的解读软件就不能了解我们的加密文件,就不能进行解读,增加加密的安全性。
php-beast提供只能在指定的机器上运行的用途。要使用此功能可以在.c文件添加无法运行机器的网卡号,例如:
char *allow_networkcards[] = {
"fa:16:3e:08:88:01",
NULL,
};
这种修改以后,php-beast扩展就没法在fa:16:3e:08:88:01这台机器上运行。另外要留意的是,由于有些机器网卡名或许不一样,所以即使你的网卡名不是eth0的话,可以在php.ini中添加配置项:="xxx"其中xxx就是你的网卡名,也可以配置多张网卡,如:="eth0,eth1,eth2"。
使用php-beast时最好不要使用默认的加密key,因为扩展是开源的php源码加密 zand,如果使用默认加密key的话,很容易被人看到。所以最好编译的之后更改加密的key,aes模块可以在.c文件更改,而des模块可以在.c文件更改。函数列表&Debug开启debug模式:
可以在时加入---beast-debug选项来启动debug模式。开启debug模式后必须在php.ini配置文件中加入配置项:beast.和beast.。beast.用于指定是否使用debug模式,而beast.用于输出解密后的php脚本源码。这样就可以在beast.目录中发现php-beast解密后的源代码,可以便捷知道扩展解密是否正确。
函数列表:():用于加密一个文件():获取可以缓存大小ze():获得beast支持的最大可加密文件大小():获得一个文件的过期时间():清空beast的所有缓存(即使有文件更新,可以使用此变量清空缓存)设置默认加密的key
1,修改加密后的文件头结构:打开.c文件,找到下面代码:
char encrypt_file_header_sign[] = {
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
};
int=(sign);
自定义设置下列代码(其中的数字的范围为:0-8,字母的范围为:a-f):
0xe8, 0x16, 0xa4, 0x0c,
0xf2, 0xb2, 0x60, 0xee
2,修改aes模块加密key:
打开php-beast-/.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,
3,修改des模块加密key:
打开php-beast-/.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,
4,修改模块加密key:
打开php-beast-/.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自定义加密组件一,首先建立一个.c的文件。例如我们要编写一个使用加密的组件,可以建立一个名叫.c的文件。然后在文件添加如下代码:
#include "beast_module.h"
int base64_encrypt_handler(char *inbuf, int len, char **outbuf, int *outlen)
{
...
}
int base64_decrypt_handler(char *inbuf, int len, char **outbuf, int *outlen)
{
...
}
void base64_free_handler(void *ptr)
{
...
}
struct beast_ops base64_handler_ops = {
.name = "base64-algo",
.encrypt = base64_encrypt_handler,
.decrypt = base64_decrypt_handler,
.free = base64_free_handler,
};
模块需要推动3个步骤,分别是:、、free方法。
方式负责把inbuf字符串加密,然后借助输出给beast。
方式负责把加密数据inbuf解密,然后借助输出给beast。
free方法负责传递和方式生成的数据
二,写好我们的加密模块后,需要在.c添加我们模块的信息。代码如下:
#include
#include "beast_module.h"
extern struct beast_ops des_handler_ops;
extern struct beast_ops base64_handler_ops;
struct beast_ops *ops_handler_list[] = {
&des_handler_ops,
&base64_handler_ops, /* 这里是我们的模块信息 */
NULL,
};
三,修改.m4文件,修改倒数第二行,如下代码:
(beast,beast.c.c.c.ccache.c.c.c*.c*,$)
.c的代码是我们添加的,这里加入的是我们模块的文件名。
目前大功告成了php源码加密 zand,可以编译试下。如果要使用我们刚编写的加密算法来加密php文件,可以设置php.ini文件的配置项,如下:
``
beast.="-algo"`
名字就是我们模块的name。
本文来自网络,如有侵权请联系网站客服进行删除
还没有评论,来说两句吧...