一个高性能、简单、跨平台的 PHP7 代码加密扩展
介绍
一个简洁、高性能、跨平台的 PHP7 代码加密扩展
源码地址:GitHub
特点
- 简单快速,经实测,几乎不影响性能
- 兼容 OPcache、Xdebug 等其他扩展
- 支持 Linux、macOS、Windows 等系统
- 兼容 Apache、Nginx + PHP-fpm、命令行等运行模式
- 加密算法较简单,这是出于速度考虑,但仍不易解密
- 若项目的 php 文件很多,可只加密部分重要代码
- 要求 PHP >= 7.0
安装
编译前请在 core.h 中做如下修改:
/* 这里定制你的加密特征头,不限长度,十六进制哦 */
const u_char tonyenc_header[] = {
0x66, 0x88, 0xff, 0x4f,
0x68, 0x86, 0x00, 0x56,
0x11, 0x16, 0x16, 0x18,
};
/* 这里指定密钥,设置长一些更安全 */
const u_char tonyenc_key[] = {
0x9f, 0x49, 0x52, 0x00,
0x58, 0x9f, 0xff, 0x21,
0x3e, 0xfe, 0xea, 0xfa,
0xa6, 0x33, 0xf3, 0xc6,
};
在 Linux、macOS 上编译
git clone https://github.com/lihancong/tonyenc.git
cd tonyenc
phpize
./configure
make
将编译好的文件 modules/tonyenc.so 加入到配置项 extension=tonyenc.so ,重启 PHP 服务
在 Windows 上编译
已编译了以下模块,可供测试(需要 VC14 运行库):
# php7.0 64位 线程安全版
php_tonyenc_php70_ts_VC14_x64.dll
# php7.0 64位 线程非安全版
php_tonyenc_php70_nts_VC14_x64.dll
加密
代码中的 tonyenc.php 是加密工具:
php tonyenc.php example.php dir/
这样即可加密 example.php 和 dir 目录下的所有 php 文件,PHP 在运行它们时会自动解密,够简单吧!
版权
允许转载、修改、商用,请注明原作者及网址:Tony (http://lihancong.cn/)
这是我开发的第一个扩展,如有不足欢迎指正
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 8年前 自动加精
关于 LearnKu
可以先生成字节码 然后加密
既然可以解密文件那加密有啥意义。。
已star :laughing:
@Payne 已移除解密功能
@Payne 可以解密的那叫编码,类似 json_encode, url_encode 这样的,能被解密的加密函数我都归类于编码!类似MD5这种不能通过算法解密的我才认为是加密!
@bluegeek 那样跨 PHP 版本就用不了了
随手star一下
@aqyuyang 编码和加密是两回事,你说的MD5也不是加密算法,是一种摘要(hash)算法,因为无法被逆向出原文。详情见 https://zh.wikipedia.org/wiki/%E5%8A%A0%E5...
@Payne 个人见解。
@江湖大虾仁 所以只能用于加密代码,要破解还是要点成本的
@aqyuyang 然鹅,RSA也可以解密,AED/DES也可以解密。。
@daryl 能解密的加密不是好编码 :smile:
:sweat_smile:
@aqyuyang :sweat_smile:
为什么加密后 无法运行啊
这个插件很棒,但是看评论为什么那么多喷子?有本事喷的人倒是发一个出来?哪里都有喷子在,好不容易作者发个好东西出来就想喷,可悲,希望能支持blade.php文件加密,也希望作者继续优化这个组件,谢谢
对这些文件加密后,应该如何部署项目,这和没有加密的项目的部署有什么不同,我也做了一个demo,运行后发现加密的文件没有解析出来,都是乱码
为什么在windows(win7)平台编译(Tonyenc.dll)成功,但无法加密文件呢?我使用的php版本是php-7.0.12-nts-Win32-VC14-x86,还有其它需要修改的地方吗?
The extension: 'tonyenc' not loaded
目前还不支持PHP高版本的?
是否对php版本有要求,是不是大于7.4就不能用了? 同时只能本机加密本机使用,加密后转移到同样安装有tonyenc扩展就代码就无法解析
我来一个无扩展的加密方案吧。
大牙PHP加密
不需要任何php扩展,基于虚拟机原理的加密方案,我自己开发的,欢迎来使用,安全性我觉得是蛮够了。。 dyjm.ttmm.vip