//by www.qzphp.cn //非对称加密函数 function myrsa($string='', $key = '', $action="EN",$sign=''){ if($action =='KEY'){ $config = array( "digest_alg" => "sha512", "private_key_bits" => 2048, //字节数512 1024 2048 4096 等 ,不能加引号,此处长度与加密的字符串长度有关系 "private_key_type" => OPENSSL_KEYTYPE_RSA, //加密类型 ); $res = openssl_pkey_new($config); openssl_pkey_export($res, $private_key); $public_key = openssl_pkey_get_details($res); $public_key = $public_key["key"]; $data = array( 'public_key'=> $public_key, 'private_key'=> $private_key, ); return $data; }elseif($action == 'EN'){ //$key = public_key openssl_public_encrypt($string, $encrypted, $key); return base64_encode($encrypted); }elseif($action == 'DE'){ //$key = private_key openssl_private_decrypt(base64_decode($string), $decrypted, $key); return $decrypted; }elseif($action == 'SIGN'){ //$key = private_key openssl_sign($string, $signature, $key, OPENSSL_ALGO_SHA256); return base64_encode($signature); }elseif($action == 'VERIFY'){ //$key = public_key $result = openssl_verify($string, base64_decode($sign), $key, OPENSSL_ALGO_SHA256); return $result;//1成功,0失败 } }