zoukankan      html  css  js  c++  java
  • PHP加密解密方法,使用openssl加密解密

    /**
     * des 加密算法
     */
    
    function do_mencrypt($input, $key) {
        if (!function_exists("mcrypt_module_open")) {
            throw_exception("请先安装mcrypt扩展");
            exit();
        }
        $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
        $input = pkcs5_pad($input, $size);
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, $key, $iv);
        $data = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $data = base64_encode($data);
        return $data;
    }
    
    /**
     * des解密算法
     * @param unknown_type $input
     * @param unknown_type $key
     */
    
    function do_mdecrypt($str, $key) {
        if (!function_exists("mcrypt_module_open")) {
            throw_exception("请先安装mcrypt扩展");
            exit();
        }
        $decrypted = mcrypt_decrypt(
            MCRYPT_RIJNDAEL_128,
            $key,
            base64_decode($str),
            MCRYPT_MODE_ECB
        );
        $dec_s = strlen($decrypted);
        $padding = ord($decrypted[$dec_s - 1]);
        $decrypted = substr($decrypted, 0, -$padding);
        return $decrypted;
    }

     使用openssl加解密算法

    <?php
    class AES {
        //AES-128-CBC 加密算法。openssl_get_cipher_methods() 可获取有效密码方式列表。
        /**
        * 参数说明:
        * $data: 加密明文
        * $method: 加密方法
        * $passwd: 加密密钥
        * $iv: 加密初始化向量(可选)
        */
        public static function encrypt($string, $key, $iv)
        {
            $data = openssl_encrypt($string, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
            $data = strtolower(bin2hex($data));
            return $data;
        }
        /**
        * 参数说明:
        * $data: 解密密文
        * $method: 解密加密方法
        * $passwd: 解密密钥
        * $iv: 解密初始化向量(可选)
        */
        public static function decrypt($string, $key,$iv)
        {
            $decrypted = openssl_decrypt(hex2bin($string), 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv);
            return $decrypted;
        }
    }
    
    //查询openssl支持的对称加密算法
    // print_r(openssl_get_cipher_methods());
    $string = '公众号:若水小站';
    $encrypt = AES::encrypt($string,'WangZhaoBo123456','RuoShui123456789');
    $decrypt = AES::decrypt($encrypt, 'WangZhaoBo123456','RuoShui123456789');
    echo '加密后:'.$encrypt;//加密后:06441b13f69ddcf552286ac9bd2dcaf2e6bbbd8bddd92f459e18746a8841282e
    echo '解密后:'.$decrypt;//解密后:公众号:若水小站
  • 相关阅读:
    打造属于自己的谷歌Maps版博客公告【演示+源码】
    CentOS 更改默认启动顺序
    VC的控制台程序,如何获取输入参数和环境变量
    如何同时提供ANSI和UNICODE函数
    VC工程需要注意字符集问题
    升级firefox到最新版
    VC工程需要注意字符集问题
    如何同时提供ANSI和UNICODE函数
    使C++ Builder编译程度独立运行
    安装谷歌浏览器
  • 原文地址:https://www.cnblogs.com/wangzhaobo/p/8648928.html
Copyright © 2011-2022 走看看