Loading

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;//解密后:公众号:若水小站

 

posted @ 2018-03-26 09:41  王召波  阅读(1993)  评论(0编辑  收藏  举报