1
我试图使用从证书获取的公钥来加密文件。使用公钥的Java RSA加密
PublicKey publicKey = cert.getPublicKey();
cipher = Cipher.getInstance("RSA", "BC");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
引发异常:java.lang.IllegalArgumentException:不是RSA密钥!
我已经试过:
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKey.getEncoded());
PublicKey rsaPublicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
但抛出java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException
:无效的RSA公钥
的org.bouncycastle.asn1.pkcs.RSAPublicKey
的constractor预计2 BigInteger
秒(可能是模和公开指数) 。
调查cert.getPublicKey()
显示它的一个DSAPublicKeyImpl
。
我该如何将它转换成RSAPublicKey
(或其他)可用?
是的,我实际上试图加密一个对称密钥,我只是想简化问题。不过,我不能生成收件人的密钥,我有他的证书,我如何为他加密密钥? – user3116865
@ user3116865 * DSA仅用于签名* **如果收件人想要接收加密邮件,他需要进行Diffie-Hellman密钥交换,使用他的DSA证书签署他对交易所的贡献,或生成新的RSA密钥对,以便您可以加密密钥。 – erickson