Es soll eine Netzwerkkommunikation zwischen mehreren Rechnern über UDP realisiert werden.
Die Kommunikation selber soll verschlüsselt abgehandelt werden (RSA).
Ich habe mir bereits für jeden Rechner ein KeyPair kreiert. Nun muss der PublicKey übers Netzwerkübertragen werden, vom Zielrechner ausgelesen und gespeichert werden um anschließend sämtliche ausgehenden Nachrichten mit Diesem zu verschlüsseln.
Da das Netzwerk über UDP kommunizieren soll, nutze ich DatagramPacket. DatagramPacket.getData() liefert ein byte[] der enthaltenen Daten.
Nun stellt sich die Frage, wie ich einen Key über das Netzwerk übertrage.
Ich habe dafür folgenden Code geschrieben
Auf der entgegengesetzten Seite muss ich das Paket entpacken, dazu nutze ich folgenden Code
Es fliegt jedoch eine Exception ->"//java.io.StreamCorruptedException: invalid stream header: EFBFBDEF". Ich habe das Netzwerk gesnifft. Das gesendete Packet enthällt den Schlüssel.Jedoch frage ich mich, wie er wieder ausgelesen werden kann.
Die Kommunikation selber soll verschlüsselt abgehandelt werden (RSA).
Ich habe mir bereits für jeden Rechner ein KeyPair kreiert. Nun muss der PublicKey übers Netzwerkübertragen werden, vom Zielrechner ausgelesen und gespeichert werden um anschließend sämtliche ausgehenden Nachrichten mit Diesem zu verschlüsseln.
Da das Netzwerk über UDP kommunizieren soll, nutze ich DatagramPacket. DatagramPacket.getData() liefert ein byte[] der enthaltenen Daten.
Nun stellt sich die Frage, wie ich einen Key über das Netzwerk übertrage.
Ich habe dafür folgenden Code geschrieben
Code:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream (bos);
oos.writeObject(publicKey);
oos.close();
System.out.println(bos);
DatagramPacktet p = new DatagramPacket();
p.setData(bos);
//anschließend wird das Packet versendet
Auf der entgegengesetzten Seite muss ich das Paket entpacken, dazu nutze ich folgenden Code
Code:
//Packet ist angekommen. Referenz heizt p
byte[] buffer = p.getData();
ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
ObjectInputStream ois = new ObjectInputStream(bis); // java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
Key nodeKey = (Key)ois.readObject();
Es fliegt jedoch eine Exception ->"//java.io.StreamCorruptedException: invalid stream header: EFBFBDEF". Ich habe das Netzwerk gesnifft. Das gesendete Packet enthällt den Schlüssel.Jedoch frage ich mich, wie er wieder ausgelesen werden kann.
Zuletzt bearbeitet: