tonyenc加密源码使用教程

首先从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
内容

<?phpecho "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加密