一个高性能、简单、跨平台的 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.phpdir 目录下的所有 php 文件,PHP 在运行它们时会自动解密,够简单吧!

版权

允许转载、修改、商用,请注明原作者及网址:Tony (http://lihancong.cn/)

这是我开发的第一个扩展,如有不足欢迎指正

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 7年前 自动加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 23

可以先生成字节码 然后加密

7年前 评论

既然可以解密文件那加密有啥意义。。

7年前 评论
小滕

已star :laughing:

7年前 评论

@Payne 已移除解密功能

7年前 评论

@Payne 可以解密的那叫编码,类似 json_encode, url_encode 这样的,能被解密的加密函数我都归类于编码!类似MD5这种不能通过算法解密的我才认为是加密!

7年前 评论

@bluegeek 那样跨 PHP 版本就用不了了

7年前 评论

@aqyuyang 编码和加密是两回事,你说的MD5也不是加密算法,是一种摘要(hash)算法,因为无法被逆向出原文。详情见 https://zh.wikipedia.org/wiki/%E5%8A%A0%E5...

7年前 评论

@江湖大虾仁 所以只能用于加密代码,要破解还是要点成本的

7年前 评论

@aqyuyang 然鹅,RSA也可以解密,AED/DES也可以解密。。

7年前 评论

@daryl 能解密的加密不是好编码 :smile:

7年前 评论

:sweat_smile:

7年前 评论

为什么加密后 无法运行啊

5年前 评论

这个插件很棒,但是看评论为什么那么多喷子?有本事喷的人倒是发一个出来?哪里都有喷子在,好不容易作者发个好东西出来就想喷,可悲,希望能支持blade.php文件加密,也希望作者继续优化这个组件,谢谢

4年前 评论

对这些文件加密后,应该如何部署项目,这和没有加密的项目的部署有什么不同,我也做了一个demo,运行后发现加密的文件没有解析出来,都是乱码

file

4年前 评论

为什么在windows(win7)平台编译(Tonyenc.dll)成功,但无法加密文件呢?我使用的php版本是php-7.0.12-nts-Win32-VC14-x86,还有其它需要修改的地方吗?

4年前 评论

The extension: 'tonyenc' not loaded

4年前 评论
PickVII 3年前
pangxianfei

目前还不支持PHP高版本的?

2年前 评论

是否对php版本有要求,是不是大于7.4就不能用了? 同时只能本机加密本机使用,加密后转移到同样安装有tonyenc扩展就代码就无法解析

1年前 评论

我来一个无扩展的加密方案吧。

大牙PHP加密

不需要任何php扩展,基于虚拟机原理的加密方案,我自己开发的,欢迎来使用,安全性我觉得是蛮够了。。 dyjm.ttmm.vip

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!