早期造个对象,写了个php的rsa帮助类库,先看使用方法 $keys = rsahelper::new_rsa_key;//生成完key之后应该记录下key值,这里省略$privkey = $keys'privkey';$pubkey = $keys'pubkey';/* $privkey = '-----begin private key-----miicdwibadanbgkqhkig9w0ba
早期造个对象,写了个php的rsa帮助类库,先看使用方法
$keys = rsahelper::new_rsa_key(); //生成完key之后应该记录下key值,这里省略$privkey = $keys['privkey'];$pubkey = $keys['pubkey']; /* $privkey = '-----begin private key-----miicdwibadanbgkqhkig9w0baqefaascamewggjdageaaogbakx0chymxyhhix5/k6gmnevkpudsqp2pdkfgollwycbxjuahpshsjilgi0ucgnc+vpfkvx6deagorbzvtz+nnpcrevptnbkmnzhuksy3mt7fo1rmaj0pbsamom1noqjskjlvgz6akp7rmm4wzpnmvcdq/9pucfcqp1fgztbg1huxagmbaaecgybegam/rojchc9utrzwby6e+nutwd3c0qa4bp49+/1pd4naubr8yq2vhxwz/ll7xohc9ibemqhlcpgsq0wegx6p/xwm0ldpwu6cwv4qodhdbddqro6mkybljt4sq1wttnklgz0ccttevnnfdmlc9zr9ot5kuezoeb55gzird5xuxqjbanlx3kujofryr1i/wzyhhjkcm8psgpde4b1g60orza9jnbutm+civmnkzm99m9aimvgjk/lbydpxv7w5yydxhrccqqdjzpcu5opwnj3tdrrkkna1lfuo5vb0scgptuezdwngbr043xrtyjhqjzix/9z19uwre9gz6u1klpa7sbyoo4nxakearskrcahxj6crrxoclx/hmpy//0ucpjfyxa32ipkpgjwz+uswycw1px83jah7ri1irk99b9zcu8xbc53myl16wwjaisu+dsdilb2yyp1jimy7gejkignl2p0w4czyxfpw0m8jt1xyfokr9doe7jp69i6jhnw0y7b/peuzg8ejttkohqjbaitajm7qqniegyhvw3gaqi8/6992y0dsmaht50pei6ujomv+x9icjy1efusohv8nb0ui8xq74sbu2yvlptquk50=-----end private key-----'; $pubkey = '-----begin public key-----migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqcl9hb2jl8h4smef5ohjj3lsqva7kj9j3shrqjzvmam8svabz7b7iycxinlnbpwvlaxylv+gxgokeqwb7c/p56xk3lt7twyjdc4bpemnzlexanazgo9kw7gjkjtz6ei7cizvym+mpd+0tjufs6zzl3a6v/t7nhwkd9rrmu24nyvmqidaqab-----end public key-----'; */ //初始化rsaobjectrsahelper::init($privkey, $pubkey); //原文$data = 'hello'; //私钥加密示例$encode = rsahelper::priv_encode($data);$ret = rsahelper::pub_decode($encode);var_dump($ret); //公钥加密示例$encode = rsahelper::pub_encode($data);$ret = rsahelper::priv_decode($encode);var_dump($ret);
类库源码如下
class rsahelper{ private static $_privkey = ''; private static $_pubkey = ''; private static $_isbase64 = false; /** * 初始化key值 * @param string $privkey 私钥 * @param string $pubkey 公钥 * @param boolean $isbase64 是否base64编码 * @return null */ public static function init($privkey, $pubkey, $isbase64=false){ self::$_privkey = $privkey; self::$_pubkey = $pubkey; self::$_isbase64 = $isbase64; } /** * 私钥加密 * @param string $data 原文 * @return string 密文 */ public static function priv_encode($data){ $outval = ''; $res = openssl_pkey_get_private(self::$_privkey); openssl_private_encrypt($data, $outval, $res); if(self::$_isbase64){ $outval = base64_encode($outval); } return $outval; } /** * 公钥解密 * @param string $data 密文 * @return string 原文 */ public static function pub_decode($data){ $outval = ''; if(self::$_isbase64){ $data = base64_decode($data); } $res = openssl_pkey_get_public(self::$_pubkey); openssl_public_decrypt($data, $outval, $res); return $outval; } /** * 公钥加密 * @param string $data 原文 * @return string 密文 */ public static function pub_encode($data){ $outval = ''; $res = openssl_pkey_get_public(self::$_pubkey); openssl_public_encrypt($data, $outval, $res); if(self::$_isbase64){ $outval = base64_encode($outval); } return $outval; } /** * 私钥解密 * @param string $data 密文 * @return string 原文 */ public static function priv_decode($data){ $outval = ''; if(self::$_isbase64){ $data = base64_decode($data); } $res = openssl_pkey_get_private(self::$_privkey); openssl_private_decrypt($data, $outval, $res); return $outval; } /** * 创建一组公钥私钥 * @return array 公钥私钥数组 */ public static function new_rsa_key(){ $res = openssl_pkey_new(); openssl_pkey_export($res, $privkey); $d= openssl_pkey_get_details($res); $pubkey = $d['key']; return array( 'privkey' => $privkey, 'pubkey' => $pubkey ); }}
妈蛋,win平台下的php protobuf折腾死我了,又改成py了,所以,python版的rsa加密辅助类来了
def new_keys(): (bob_pub, bob_priv) = rsa.newkeys(1024) return {'pubkey':bob_pub.save_pkcs1(), 'privkey':bob_priv.save_pkcs1()} class rsahelper: def __init__(self, privkey, pubkey): self._privkey = privkey.decode('string-escape') self._pubkey = pubkey.decode('string-escape') def encode_priv(self, data): privkey = rsa.privatekey.load_pkcs1(self._privkey) crypto = rsa.encrypt(data, privkey) return crypto def decode_pub(self, data): pubkey = rsa.publickey.load_pkcs1(self._pubkey) msg = rsa.decrypt(data, pubkey) return msg def decode_priv(self, data): privkey = rsa.privatekey.load_pkcs1(self._privkey) msg = rsa.decrypt(data, privkey) return msg def encode_pub(self, data): pubkey = rsa.publickey.load_pkcs1(self._pubkey) crypto = rsa.encrypt(data, pubkey) return crypto
原文地址:rsa加密解密类库附示例-php&python版, 感谢原作者分享。