php 源码加密保护 bease方案

推荐使用 php-bease 这个免费开源方案。

有一说一,这个项目上次更新时间是2021年…

多好的项目呀。

作者说在 php5.1 ~ php7.2 上都测试过。

源码地址:

  • C源码: https://github.com/liexusong/php-beast

  • dll版: https://github.com/imaben/php-beast-binaries/tree/master/php72

Windows上使用

安装

安装(编译)过程就没有了, dll 都给你了,丢到 ext 目录里,再在 php.ini 里加载它就行

使用

源码库里提供了 ./tools/encode_files.php 脚本文件 和 配套的 configure.ini

填一下 configure.ini

; source path
src_path = "F:\\Export\\source"; destination path
dst_path = "F:\\Export\\source_Encrypt"; expire time
expire = "2099-12-31 23:59:59"; encrypt type
encrypt_type = "DES"

然后跑一下encode_files.php脚本

# Shell
cd F:
cd php-beast-master\tools
D:/php7/php.exe -c D:/php7/php.ini ./encode_files.php

脚本就会把 指定目录里的所有 php 文件加密,输出到 输出目录 里,文件名不变。

加密后的 php 文件可以照!常!使!用!,但不可直接读 —— 显示乱码。

估计这个扩展的解密特性,生效在解释 PHP 源码之前: 解释器准备解释 a.php ,发现是密文,bease解密,将解密后的内容交给 解释器继续解释。

问题

  • Windows上都用这个 dll ,说明大家用的是同一个密钥呢,如何定制密钥呢?

  • 还是得学习下怎么把 bease 源码重新编译成 dll

Linux上使用

安装

  • 下载bease的C语言源码,手动编译成扩展,得到 xx.so
wget https://github.com/liexusong/php-beast/archive/master.zip
unzip master.zip
cd php-beast-master
phpize
./configure
make && make install
  • 修改 php.ini 加载这个 xx.so (一般不需要,编译后会自动加载上)

使用

  • 使用附带的 encode_files.phpencode_file.php 脚本 加密你想要加密的文件

  • 使用加密的文件替换原文件,照常使用就行

  • 可以调整密钥,请参考源码首页的说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

越活越“老“越值钱——来喝了这碗孟婆汤吧

目录 一、背景介绍二、思路&方案三、过程1.开头先从小编的行业说起2.扩展到各行各业,从小编的视角和认知的对比3.纵观人类发展和科技发展的对比4.我身边就有越活越"老"越值钱的人5.如何做到这一点的基本逻辑 四、总结 一、背景介绍 对于自己的未来&a…

Java强训day4(选择题编程题)

选择题 接口中的方法是为了让重写编程题 题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a_b sc.nextInt();int b_c sc.nextInt();int ab sc.nextInt();int bc sc.nextInt();for(in…

mysql索引失效

索引失效 1.违反最左前缀法则 查询要从索引的最左前列开始,不能跳过索引中的列 没有违反 违反 部分违反,只有最左边的命中索引 2.查询右边范围的列,不能使用索引 范维列不满足最左前缀 3.索引列上进行运算,索引会失效 改变…

假期刷题打卡--Day15

1、MT1152韩信又生气了 韩信点兵(大于10人),三个三个一排少1个人,五个五个一排又少1个人,七个七个一排还少1个人。韩信生气了,从别的队伍里调来一个人!这样不管是三个一排五个一排还是七个一排都完美了。问原本最少应该有多少人。…

【python】程序的流程控制

程序的流程控制 程序的描述方式程序的组织结构顺序结构选择/分支结构单分支if语法结构双分支if...else...结构多分支结构选择结构循环结构for与while程序跳转语句break和continuepass空语句程序的描述方式 自然语言:使用人类语言,直接描述程序 inputprocessoutput流程图:用…

每日一练 | 华为认证真题练习Day172

1、关于OSPF的ASBR-SUMMARY-LSA中LSA头部他、信息描述错误的是 A. LINK STATE ID表示ASBR的ROUTER ID B. ADVERTISING ROUTER表示该ABR的ROUTER ID C. ADVERTISING ROUTER字段永远不会改变 D. METRIC表示该ABR到达ASBR的OSPF开销 2、关于OSPF外部路由种类描述错误的是 A. …

神经网络进一步学习

一、代价函数 首先引入一些便于稍后讨论的新标记方法:假设神经网络的训练样本有m个,每个包含一组输入x和一组输出y,L表示神经网络层数,表示该层的神经元个数,将神经网络的分类定义为两种情况:二类分类和多类…

2024.1.26力扣每日一题——计算 K 置位下标对应元素的和

2024.1.26 题目来源我的题解方法一 位运算统计二进制数中1的个数方法二 官方的一种优化计算二进制中1的个数的方法 题目来源 力扣每日一题;题序:2859 我的题解 方法一 位运算统计二进制数中1的个数 对于每一个位置i都去计算i对应的二进制数中1的个数 …

上位机图像处理和嵌入式模块部署(极致成本下的图像处理)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前,大家都习惯了特定的图像处理方式,要么是windows上位机来处理,要么是arm soc来进行处理,要么是…

亚信安慧AntDB:赋能业务核心 助力数据管理

在当今数据驱动的信息时代,数据库面临着前所未有的挑战与机遇。随着技术的不断进步和用户需求的多样化,传统的数据库解决方案已经难以满足运营商核心业务的复杂需求。亚信安慧AntDB数据库,作为一款强大数据库产品,旨在帮助运营商应…

JavaScript基础之基本数据类型(值类型)详解

数据类型 数据类型是指可以在程序中存储和操作的值的类型,每种编程语言都有其支持的数据类型,不同的数据类型用来存储不同的数据,例如文本,数字等 JavaScript是一种弱类型语言,在定义变量时不需要提前指定变量的类型…

[SwiftUI]Text对字符串中部分字符改变颜色和字体

如图,需要对字符串中部分字符改变颜色和字体。 在 SwiftUI 中合并带有不同样式的文本,应该使用不同的 Text 实例并将它们合并起来。将实例使用 运算符合并起来,每个 Text 实例都保持其自己的样式设置。这种方式可以正常编译并运行&#xff0…

蓝桥杯——每日一练(简单题)

题目 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。 解析 一、list()函数配合map()函数获得…

DNS是什么?DNS在网络通信中的作用是什么?(国科云)

我们在日常工作生活中,大多数情况是通过域名去访问网站、发送邮件。当我们打开一个域名或者访问一个网页时,我们的计算机需要知道这个网站的IP地址,才能完成数据的收发通信。这时,DNS就发挥了至关重要的作用,它像一个巨…

跨域请求详解

跨域请求 一 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏…

ps---1.使用置入嵌入的智能化对象命令制作拼贴画

ps—使用置入嵌入的智能化对象命令制作拼贴画 素材 步骤 打开背景图 置入嵌入对象(置入完,移动到正确的位置,回车或双击) 栅格化图层 重复上述步骤制作拼贴画

第二百八十八回

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

BGP故障分析——邻居无法建立的原因

点赞关注,持续更新!!! BGP邻居关系无法建立的原因 底层IGP网络不通;接口是否调用了ACL过滤了TCP的179端口;邻居的Router ID冲突;配置的邻居的AS号错误;用Loopback建立邻居时没有配…

apex如何保存多行字符串

虽然可以用换行符把很长的字符串放在一行,但是不便于阅读。apex没有像python中三个引号这种直接支持多行字符串的格式,可以用下面这种方法: String query SELECT Project__c, Project__r.Testing_Submitted__c, Project__r.Project_Sub_P…

go语言(二十)---- 有缓冲的channel

有缓冲的channel 举个例子 package mainimport ("fmt""time" )func main() {c : make(chan int,3) //带有缓冲的 channelfmt.Println("len(c) ",len(c),",cap(c)",cap(c))go func() {defer fmt.Println("子go程结束")for i…