function create_key() { $res = openssl_pkey_new(); if($res == false) return false; openssl_pkey_export($res, $private_key); $public_key = openssl_pkey_get_details($res); return array('public_key'=>$public_key["key"],'private_key'=>$private_key); } /** * 用私钥加密 */ public function private_encrypt($input) { openssl_private_encrypt($input,$output,$this->private_key_resource); return base64_encode($output); } /** * 解密 私钥加密后的密文 */ public function public_decrypt($input) { openssl_public_decrypt(base64_decode($input),$output,$this->public_key_resource); return $output; } /** * 用公钥加密 */ public function public_encrypt($input) { openssl_public_encrypt($input,$output,$this->public_key_resource,OPENSSL_PKCS1_OAEP_PADDING); return base64_encode($output); } /** * 解密 公钥加密后的密文 */ public function private_decrypt($input) { openssl_private_decrypt(base64_decode($input),$output,$this->private_key_resource,OPENSSL_PKCS1_OAEP_PADDING); return $output; } } $rsa = new RSA(file_get_contents('public.txt'),file_get_contents('private.txt')); // $str = '这里是待加密的数据'; echo '
公钥加密私钥解密如下:
'; echo '原始数据:',$str,'
'; $tmpstr = $rsa->public_encrypt($str); //用公钥加密 echo '加密后的数据:' . $tmpstr,''; $tmpstr = $rsa->private_decrypt($tmpstr); //用私钥解密 echo '解密结果:' . $tmpstr,'
私钥加密公钥解密如下:
'; ============================================================= echo '原始数据:',$str,'
'; $tmpstr = $rsa->private_encrypt($str); //用私钥加密 echo '加密后的数据' . $tmpstr,''; $tmpstr = $rsa->public_decrypt($tmpstr); //用公密解密 echo '解密结果:' . $tmpstr,'';