PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库McryptMhash

其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。

Mcrypt 函数

封装加密类代码

<?php
/**
 * 加密类
 */
class Security 
{
    private static $_instance;
    private function __construct() {}
    private function __clone() {}

    private $_secret_key = 'key';   //加密密钥 可自定义设置 防止泄露
    /**
     * 单例模式
     */
    public static function getInstance() 
    {
        if (!(self::$_instance instanceof self)) {
            self::$_instance = new self;
        }
        return self::$_instance;
    }
    /**
     * 加密工具函数
     */
    private function encode1($data) 
    {
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        $this->_secret_key = 'swtrademark_key';
        mcrypt_generic_init($td, $this->_secret_key, $iv);
        $encrypted = mcrypt_generic($td, $data);
        mcrypt_generic_deinit($td);
        return $iv . $encrypted;
    }
    /**
     * 解密工具函数
     */
    private function decode1($data) 
    {
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
        $iv = mb_substr($data, 0, 32, 'latin1');
        $this->_secret_key = 'swtrademark_key';
        mcrypt_generic_init($td, $this->_secret_key, $iv);
        $data = mb_substr($data, 32, mb_strlen($data, 'latin1'), 'latin1');
        $data = mdecrypt_generic($td, $data);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);

        return trim($data);
    }
    /**
     * 替换
     */
    private function replace($str) 
    {
        $str1 = str_replace('/', '*', $str);
        $str2 = str_replace('=', '^', $str1);
        return str_replace('+', '_', $str2);
    }
    /**
     * 反替换
     */
    private function base64replace($str) 
    {
        $str1 = str_replace('*', '/', $str);
        $str2 = str_replace('^', '=', $str1);
        return str_replace('_', '+', $str2);
    }
    /**
     * 加密调用函数
     */
    public function word_encode($keyWord) 
    {
        $str = $this->encode1($keyWord);
        return trim($this->replace(base64_encode($str)));
    }
    /**
     * 解密调用函数
     */
    public function word_decode($keyWord) 
    {
        $str = base64_decode($this->base64replace($keyWord));
        return trim($this->decode1($str));
    }
}
/**
 * 调用
 */
$str = '这是个秘密';
//加密
$password = Security::getInstance()->word_encode( $str );
echo $password . '<br>';
//解密
echo Security::getInstance()->word_decode( $password );
//结果: (加密密码为动态的,实时变化,两次运行结果如下)
/**
 * bUxwS2u24waVyrXtMu*vKgsPGWVnjzrFD1na8krUAxZOJuAm7qMO4S_o4MogWL1G82OYhCUjt_uW8phmU_niww^^
 * 这是个秘密
 */
/**
 * 2A_GIJvNHQ9J9NPpKu6x2wehP4ondYQeU1QJQNKj1Bd9NCDPZz0QbENIXE5_pgbespM5qS78Dj2cfSibgL3vWQ^^
 * 这是个秘密
 */

如若时光萧瑟去丶
111 声望9 粉丝

weakChickenPeng.