众所周知,小编作为开发者,用php辛辛苦苦写的代码,结果被人拿走了,想更好的保护代码版权、代码版权保护机制哪该怎么保护呢?最近Vance在研究一款开源beast加密扩展,小编测试了,还不错因此小编出一期视频教程:php beast扩展加密(零基础视频教程加密第一课)
准备工作
加密测试坏境:nginx1.22
、mysql5.6
、php7.1
、phpMyAdmin 5.2
github beast扩展加密开源网址:https://github.com/liexusong/php-beast
开源beast加密扩展安装包:https://github.com/liexusong/php-beast/archive/master.zip
Windows DLL扩展:https://github.com/imaben/php-beast-binaries
命令安装
wget https://github.com/liexusong/php-beast/archive/master.zip //下载加密扩展安装包
unzip master.zip //解压压缩包
cd php-beast-master //进入加密扩展目录
自定义加密key秘钥:最好不要使用默认的加密key,因为扩展是开源的,如果使用默认加密key的话,很容易被人发现默认秘钥是很好破解的,因此我们首先需要从新自定义加密key秘钥(修改3~4个文件)
文件秘钥修改:Vance先跟科普一下需要修改哪些自定义秘钥以及怎么修改,Vance 记得是修改四个文件(当时小编就修改了四个文件)。
自定义加密秘钥修改
1、修改 header.c
文件改变php-beast加密后的文件头结构,防止网络流行的解密软件识别我们的加密php文件,增强安全性
2、修改aes_algo_handler.c
文件中的加密KEY,不要使用默认的加密key,因为此代码是开源代码,如果使用默认的key,相当于key公开了,没有任何的加密作用.
3、修改des模块加密key: des_algo_handler.c
4、修改base64模块加密key: base64_algo_handler.c
5、修改networkcard.c
文件(这个小编觉得没用就没有修改)可以指定运行服务器的 网卡 MAC地址,这样加密后的php文件就只能在这些指定的服务器上运行了
6、base64_algo_handler.c
文件,小编没有修改过,因为小编没用这个 这个范围在应该在-1到256 之间 (小编觉得没必要设置这个 小编用不到base64加密),这里小编就先跳过这一步了 (无关紧要)
这里前三个文件16进制编码修改(a-f
数字范围0-8
随便即可) 范围内可取
修改完成自定义key秘钥后我们就可以执行以下编译命令了:
/////////////////////////以下命令确保已经修改默认key加密秘钥///////////////////
phpize //用于准备 PHP 扩展进行编译
find / -name "php-config" //先查找php版本 配置文件
./configure --with-php-config= //后面再填写查找需要运行的php版本位置文件
//列如:./configure --with-php-config=/www/server/php/71/bin/php-config
//vance 在这里用的php7.1
sudo make && make install // 安装 make 开始进行源代码编译
sudo make test
php -m //查看安装的扩展
编译好之后修改php.ini
配置文件, 加入配置项: extension=beast.so
, 重启php-fpm
文件加密
多文件加密
安装完 php-beast
后可以使用 tools
目录下的 encode_files.php
来加密你的项目。使用 encode_files.php
之前先修改 tools
目录下的 configure.ini
文件,如下:
src_path = "jiami";加密前的项目路径
dst_path = "encode";加密后项目的保存路径
;小编在这里就不填写了 ,不填写代表没有时间限制
expire = "" ; expire time 加密到期时间 格式 列如:2099-05-30 23:59:00
encrypt_type = "ASE"; encrypt 加密方式 有三种:ASE、DES、BASE64(这里不推荐BASE64加密)
src_path
是要加密项目的路径,dst_path
是保存加密后项目的路径,expire
是设置项目可使用的时间 (expire
的格式是:YYYY-mm-dd HH:ii:ss
)。
encrypt_type
是加密的方式,选择项有:DES
、AES
、BASE64
。
修改完 configure.ini
文件后就可以使用命令 php encode_files.php
开始加密项目。
单文件加密
php encode_file.php --encrypt DES --oldfile 1.php --newfile 22.php
这是单文件加密列如:
encrypt DES 是加密格式 可以修改成 encrypt ASE
--oldfile 后面是就需要加密的文件
--newfile 是加密后要保存的新文件
例如:
php encode_file.php --encrypt AES --oldfile b.php --newfile index.php
函数加密
使用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多版本加密扩展,vance已经找到解决方法下期视频再来详细讲解操作;谢谢观看!