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