인증서에서 얻은 공개 키로 파일을 암호화하려고합니다.공개 키로 Java RSA 암호화
PublicKey publicKey = cert.getPublicKey();
cipher = Cipher.getInstance("RSA", "BC");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
예외를 throw합니다. 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
입니다.
Cipher.getInstance("RSA", "BC")
으로 사용할 수있는 RSAPublicKey
(또는 그 외)으로 변환하려면 어떻게해야합니까?
예, 실제로 대칭 키를 암호화하려고하는데 문제를 단순화하려고했습니다. 그래도받는 사람의 키를 생성 할 수는 없으며 그의 인증서를 가지고 어떻게 그를 암호화 할 수 있습니까? – user3116865
@ user3116865 * DSA는 서명 전용입니다 ** ** 수신자가 암호화 된 메시지를 수신하려면 Diffie-Hellman 키 교환을 수행하거나 DSA 인증서를 사용하여 교환기에 기부를 서명하거나 새 RSA 키 쌍을 사용하여 키를 암호화 할 수 있습니다. – erickson