虽然rsa算法理论上支持对称的公钥加密私钥解密/私钥加密公钥解密,但大部分平台的rsa api都设计成只提供public key encrypt/ private key decrypt的接口。这是由于私钥加密会带来私钥泄露的风险。一般私钥加密过程只用于签名sign,因为sign的过程是加密之前对消息进行hash,然后der,然后加密,验证的过程是逆向的,对比解密和der解码之后的hash做对比,因此不会泄露private key。
因此在你的例子里,key是包含公钥和私钥一体的,但是在key上调用encrypt会默认用公钥加密,然后你再用pubKey去解密,但是pubkey只是公钥没有私钥,于是就提示错误了。
温馨提示:答案为网友推荐,仅供参考