php-beast 开源 PHP 源代码加密模块
使用方法
修改 key.c 文件的 __authkey 加密 key,编译安装,接着使用 beast_encode_file() 函数进行加密,加密后的文件 beast 模块能自动识别。
- 使用案例:http://www.beastcoder.com
- 通过网址:http://www.beastcoder.com/info.php 可以看到本扩展的信息。
编译安装如下:
$ 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 配置文件,加入配置项:extension=beast.so,重启 php-fpm
温馨提示:
- 缓存设置越大,效率越高
- 可以修改 key.c 文件中的加密 key
使用 php-beast 的性能:
不使用 php-beast 的性能:
配置项:
beast.cache_size = size beast.log_file = "path_to_log" beast.log_user = "user" beast.log_level = "debug" beast.enable = On
beast.log_level 支持参数:
1. DEBUG 2. NOTICE 3. ERROR
支持的模块有:
1. AES 2. DES 3. Base64
通过测试环境:
Nginx + Fastcgi + (PHP-5.3.x/PHP-5.2.x)
怎么加密项目
加密方案 1
安装完 php-beast
后可以使用 tools
目录下的 encode_files.php
来加密你的项目。使用 encode_files.php
之前先修改 tools
目录下的 configure.ini
文件,如下:
; source path src_path = "" ; destination path dst_path = "" ; expire time expire = "" ; encrypt type (selection: DES, AES, BASE64) encrypt_type = "DES"
src_path
是要加密项目的路径,dst_path
是保存加密后项目的路径,expire
是设置项目可使用的时间 (expire
的格式是:YYYY-mm-dd HH:ii:ss
)。encrypt_type
是加密的方式,选择项有:DES、AES、BASE64。 修改完 configure.ini
文件后就可以使用命令 php encode_files.php
开始加密项目。
加密方案 2
使用 beast_encode_file()
函数加密文件,函数原型如下:beast_encode_file(string $input_file, string $output_file, int expire_timestamp, int encrypt_type)
。
1. $input_file: 要加密的文件 2. $output_file: 输出的加密文件路径 3. $expire_timestamp: 文件过期时间戳 4. $encrypt_type: 加密使用的算法(支持:BEAST_ENCRYPT_TYPE_DES、BEAST_ENCRYPT_TYPE_AES)
制定自己的 php-beast
php-beast
有多个地方可以定制的,以下一一列出:
1. 使用 header.c
文件可以修改 php-beast
加密后的文件头结构,这样网上的解密软件就不能认识我们的加密文件,就不能进行解密,增加加密的安全性。
2. php-beast
提供只能在指定的机器上运行的功能。要使用此功能可以在 networkcards.c
文件添加能够运行机器的网卡号,例如:
char *allow_networkcards[] = { "fa:16:3e:08:88:01", NULL, };
这样设置之后,php-beast
扩展就只能在 fa:16:3e:08:88:01
这台机器上运行。另外要注意的是,由于有些机器网卡名可能不一样,所以如果你的网卡名不是 eth0
的话,可以在 php.ini
中添加配置项: beast.networkcard = "xxx"
其中 xxx
就是你的网卡名,也可以配置多张网卡,如:beast.networkcard = "eth0,eth1,eth2"
。
3. 使用 php-beast
时最好不要使用默认的加密key,因为扩展是开源的,如果使用默认加密key的话,很容易被人发现。所以最好编译的时候修改加密的key,aes模块
可以在 aes_algo_handler.c
文件修改,而 des模块
可以在 des_algo_handler.c
文件修改。
开启 debug 模式
可以在configure时加入 --enable-beast-debug
选项来开启debug模式。开启debug模式后需要在php.ini配置文件中加入配置项:beast.debug_path
和 beast.debug_mode
。beast.debug_mode
用于指定是否使用debug模式,而 beast.debug_path
用于输出解密后的php脚本源码。这样就可以在 beast.debug_path
目录中看到php-beast解密后的源代码,可以方便知道扩展解密是否正确。
函数列表
1. beast_encode_file(): 用于加密一个文件
2. beast_avail_cache(): 获取可以缓存大小
3. beast_support_filesize(): 获取 beast 支持的最大可加密文件大小
4. beast_file_expire(): 获取一个文件的过期时间
5. beast_clean_cache(): 清空beast的所有缓存(如果有文件更新, 可以使用此函数清空缓存)
常见问题
1. linux:如果出现 502 错误,一般是由于 GCC 版本太低导致,请先升级 GCC 再安装本模块。
2. Windows:IIS 环境下 FastCGI 进程异常退出:尝试将 IIS 的运行用户从 ApplicationPoolIdentity 改为 LocalSystem
gitee 地址:https://gitee.com/thinkcmf/php-beast
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论