php 加密
2021/7/19 17:07:45
本文主要是介绍php 加密,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
首先从git下载文件下来
https://github.com/lihancong/tonyenc
git clone https://github.com/lihancong/tonyenc
加密前记得备份!!!
因为加密了,原文件全部被加密了。作者已经把解密的方法去掉,所以不可逆的哦,自己要小心文件
加密前记得备份!!!
加密前记得备份!!!
加密前记得备份!!!
将它安装在php扩展里面,
必须大于php7.0以上
这里我系统7.2,如果查看php版本呢?
php -v
[root@VM_0_7_centos lv57]# php -v PHP 7.2.13 (cli) (built: Dec 17 2018 13:44:46) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
找到php的php-config文件
find / -name php-config
[root@VM_0_7_centos lv57]# find / -name php-config /www/server/php/72/bin/php-config /www/server/php/72/src/scripts/php-config
使用第一个,把它目录记录下来,等会用到。/www/server/php/72/bin/php-config
下面那个是源。
刚才把tonyenc下载了。
进入这个目录
cd tonyenc
更改加密参数
修改这个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, };
上面根据他给的,相应改下数字,避免跟其他人一样,安全性就差了,随便加几个或者是改数字即可。
然后,执行php安装扩展命令:phpize
phpize
如果环境找不到phpize,请使用绝对路径/www/server/php/72/bin/phpize
配置到PHP里面
./configure --with-php-config=/www/server/php/72/bin/php-config
--with-php-config 这个目录就是上面刚才查找的那个
最后执行
make && make install
将他配置到php.ini里面
如果不知道php.ini文件,直接搜索
find / -name php.ini
例如我的
[root@VM_0_7_centos bin]# find / -name php.ini /www/server/php/72/etc/php.ini
修改php.ini文件末尾最加刚才的扩展
extension=tonyenc.so
参考
[Zend ZendGuard Loader] ;php7 do not support zendguardloader @Sep.2015,after support you can uncomment the following line. ;zend_extension=/usr/local/zend/php72/ZendGuardLoader.so ;zend_loader.enable=1 ;zend_loader.disable_licensing=0 ;zend_loader.obfuscation_level_support=3 ;zend_loader.license_path= ;xcache extension = /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/fileinfo.so extension=/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/exif.so [swoole] extension = swoole.so ;上面自带,下面才是新加的 tonyenc.so extension = tonyenc.so
搞定配置之后,重启动php,nginx。然后执行
[root@VM_0_7_centos bin]# php -m |grep tonyenc
如果有输出
tonyenc
表示安装扩展成功
如何加密
随便在网站目录下新建一个demo文件夹
mkdir /www/wwwroot/demo/
新建文件demo.php
内容
<?php echo "kongiq你好"; ?>
新建加密文件,这个文件它提供了,直接复制下来,比如我这个文件名叫:jiami.php
<?php /** * tonyenc.php: Encrypt or decrypt the script with tonyenc. * * A high performance and cross-platform encrypt extension for PHP source code. * * @author: Tony * @site: lihancong.cn * @github: github.com/lihancong/tonyenc */ if (version_compare(PHP_VERSION, 7, '<')) die("PHP must later than version 7.0\n"); if (php_sapi_name() !== 'cli') die("Must run in cli mode\n"); if (!extension_loaded('tonyenc')) die("The extension: 'tonyenc' not loaded\n"); if ($argc <= 1) die("\nusage: php tonyenc.php file.php ... encrypt the php file(s) or directory(s)\n\n"); array_shift($argv); foreach ($argv as $fileName) { if (is_file($fileName)) { handle($fileName); } elseif (is_dir($fileName)) { $DirectoriesIt = new RecursiveDirectoryIterator($fileName, FilesystemIterator::SKIP_DOTS); $AllIt = new RecursiveIteratorIterator($DirectoriesIt); $it = new RegexIterator($AllIt, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH); foreach ($it as $v) handle($v[0]); } else { echo "Unknowing file: '$fileName'\n"; } } function handle($file) { if ($fp = fopen($file, 'rb+') and $fileSize = filesize($file)) { $data = tonyenc_encode(fread($fp, $fileSize)); if ($data !== false) { if (file_put_contents($file, '') !== false) { rewind($fp); fwrite($fp, $data); } } fclose($fp); } }
现在加密demo.php那个文件
在命令符输入php jiami.php demo.php
就可以完成demo.php文件加密了
对文件夹下的所有文件加密
比如
config/a.php config/b.php
命令符直接
php jiami.php config/
就可以完成config的a.php,b.php加密
作者:空气KQ
链接:https://www.jianshu.com/p/6eb1107dac6c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这篇关于php 加密的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享