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;//解密后:公众号:若水小站
  • 相关阅读:
    用C++做微信公众平台开发的后台开发时,用sha1加密验证的方法
    UART Receive FIFO and Receive Timeout
    Compile cpp File Manually without IDE under Mingw Environment
    html5 返回当前地理位置的坐标点(经纬度)
    逆袭!花两个月吃透这份“MySQL宝典”拿到字节offer
    MySQL约束的概述
    2020-11-28
    人工智能能力提升指导总结
    年轻就该多尝试,教你20小时Get一项新技能
    MySQL~存储过程基本操作
  • 原文地址:https://www.cnblogs.com/wangzhaobo/p/8648928.html
Copyright © 2011-2022 走看看