美文网首页
tonyenc加密源码使用教程

tonyenc加密源码使用教程

作者: 空气KQ | 来源:发表于2019-01-25 00:01 被阅读0次

    首先从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加密

    相关文章

      网友评论

          本文标题:tonyenc加密源码使用教程

          本文链接:https://www.haomeiwen.com/subject/cqupjqtx.html