PHP代码加密,内网离线可用,别人改不动,只有你能改

无需装扩展,也无需花钱,就用PHP源码加密你的文件,内网离线可用,别人改不动,只有你能改。
以laravel框架app/Http/Controllers/UserController.php文件示例:
1.生成密钥

php -r "echo base64_encode(random_bytes(32));"

2.加密脚本
app同级目录创建文件: encrypt.php

//填充内容
<?php
$key = base64_decode('24ndU8………');  //刚刚生成的密钥
$src = file_get_contents('./app/Http/Controllers/UserController.php');  //文件的路径
$compressed = gzcompress($src, 9);  
$iv      = substr($key, 0, 16);
$cipher  = openssl_encrypt($compressed, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
file_put_contents(
    './app/Http/Controllers/UserController.php.enc',  //加密的文件
    '<?php ' . base64_encode($cipher)
);

3.执行加密脚本

php encrypt.php

4.制作「加载器」

//创建一个文件,制作加载器,运行加密的文件
<?php
$key = base64_decode('24ndU8………');  //相同的密钥
$raw = file_get_contents(__DIR__ . '/UserController.php.enc');
$cipher  = base64_decode(substr($raw, 6));
$iv      = substr($key, 0, 16);
$dec     = openssl_decrypt($cipher, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
$code    = gzuncompress($dec);
if ($code === false) abort(500, 'Controller corrupted');
eval('?>' . $code);

5.后续升级

  • 本地改好原文件
  • 再跑 php encrypt.php
  • 只替换 .php.enc 文件即可上线

以上方法需要更改加密的文件,太繁琐了,我们可以在加密脚本的时候传入需要加密的文件即可,将加密脚本修改一下

<?php   
if ($argc !== 2) {
    echo "用法: php encrypt.php <文件路径>\n";
    exit(1);
}

$inFile  = realpath($argv[1]);
if (!is_file($inFile)) {
    echo "文件不存在: {$argv[1]}\n";
    exit(1);
}
$key = base64_decode('24ndU8………');
$src = file_get_contents($inFile);
$compressed = gzcompress($src, 9);
$iv      = substr($key, 0, 16);
$cipher  = openssl_encrypt($compressed, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
file_put_contents(
    $inFile . '.enc',
    '<?php ' . base64_encode($cipher)
);

//执行
php encrypt.php app/Http/Controllers/UserController.php

最后,一定要保存好源文件,不然坑的是你自己。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容