So, ich muss nochmal den Thread aus den Tiefen des Forums holen.
Ich habe immer noch das selbe Problem. Das da heißt Daten mit RSA verschlüsseln, die länger sind als die zugelassenen Daten.
Es sollen nämlich wieder ein RSA-Schlüssel mit RSA verschlüsselt und über eine Netzwerkanbindung verschickt werden. (Stichwort: Zertifizierung)
Natürlich ist der serialisierte RSA-Schlüssel länger als die zulässige Läge der Daten zum verschlüsseln. [Exkurs: Da ich einen 2048byte großen RSA-Schlüssel benutze, kann dieser nur maximal 256 Byte verschlüsseln (Der zu verschlüsselnde Schlüssel ist aber wiederum serialisiert 551 Byte lang.]
[code=Java]public static void main(String[] args) throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
int keySize = 2048;
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");
SecureRandom random = new SecureRandom();
generator.initialize(keySize, random);
KeyPair pair = generator.generateKeyPair();
Key pubKey = pair.getPublic();
Key privKey = pair.getPrivate();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos;
oos = new ObjectOutputStream(bos);
oos.writeObject(pubKey);
byte[] input = bos.toByteArray();
Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, pubKey, random);
byte[] cipherText = cipher.doFinal(input);
System.out.println("cipher: " + new String(cipherText));
cipher.init(Cipher.DECRYPT_MODE, privKey);
byte[] plainText = cipher.doFinal(cipherText);
System.out.println("plain : " + new String(plainText));
}[/code]
liefert
[code=Java]Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block
at org.bouncycastle.jce.provider.JCERSACipher.engineDoFinal(Unknown Source)
at javax.crypto.Cipher.doFinal(Cipher.java:1813)
at test.RSACryptTest.main(RSACryptTest.java:77)[/code]
Die Frage ist nun, wie realisiere ich dies möglichst geschickt, ohne dass ich mich lange in Bibliotheken oder Frameworks einlesen muss?
P.S.Das was SPiKEe geschrieben hat, hört sich sehr interessant an, jedoch find ich die Seite mehr als unübersichtlich und bin ehrlich gesagt ein wenig überfordert, sowohl bei der Frage, welches das richtige Pakte ist, wie auch wie ich es anschließend benutze. Trotzdem danke SPiKEe.