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 脚本 加密你想要加密的文件

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

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

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP的`pack`函数是一个二进制数据打包函数,用于把数据按指定格式转换成二进制字符串。它并不是一个加密函数,不能直接用于加密码文件。 如果你需要对PHP码文件进行加密,可以使用一些第三方工具或者自己编写加密脚本实现。以下是一个简单的PHP加密示例: ```php <?php // 加密函数 function encrypt($data, $key){ $encrypted_data = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $key); return base64_encode($encrypted_data); } // 解密函数 function decrypt($data, $key){ $encrypted_data = base64_decode($data); return openssl_decrypt($encrypted_data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $key); } // 加密码文件 $source_file = 'test.php'; $encrypted_file = 'test_encrypted.php'; $key = 'my_secret_key'; $data = file_get_contents($source_file); $encrypted_data = encrypt($data, $key); file_put_contents($encrypted_file, '<?php /* Encrypted */ ?>' . $encrypted_data); // 解密码文件 $encrypted_data = substr(file_get_contents($encrypted_file), 19); // 去除 '<?php /* Encrypted */ ?>' $data = decrypt($encrypted_data, $key); file_put_contents($source_file, $data); ``` 这个示例使用了AES-128-CBC加密算法对码文件进行加密,并使用一个密钥作为加密参数。加密后的数据通过Base64编码后存储到文件中,解密时则需要先解码再使用相同的密钥进行解密。请注意,这种简单的加密方式并不足以保证码的安全性,仅供学习和参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值