php 加密
首先从git下载文件下来
https://github.com/lihancong/tonyenc
git clone https://github.com/lihancong/tonyenc
加密前记得备份!!!
因为加密了,原文件全部被加密了。作者已经把解密的方法去掉,所以不可逆的哦,自己要小心文件
加密前记得备份!!!
加密前记得备份!!!
加密前记得备份!!!
将它安装在php扩展里面,
必须大于php7.0以上
这里用系统7.3,如果查看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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。