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