Hallo Leute,
folgendes Problem:
Ich möchte ein mir übergebenes Objekt(selbsterstellte Klasse "Nachricht") namens "msg" verschlüsseln.
Die Klasse "Nachricht" kann aus Text,Bildern etc bestehen, was zuallererst nach meinen Erkenntnissen keine Rolle spielt, weil wir dann ja eh einen Stream haben bzw ein byte[].
Nach meinen Recherchen, gibt es jetzt zwei Wege:
1) Ich erstelle einen ObjectOutputStream und schreibe da mein "msg"-Objekt rein
2) Diesen oos (ObjectOutputStream) wandle ich dann in einen CipherOutputStream um.
3)In diesem Stream ist mein Objekt meiner Erkenntnis nach verschlüsselt.
An dieser Stelle könnte ich nun nach meinem Verständnis auch das verschlüsselte byte[] encryptedBytes returnen? Korrekt?
Oder Alternative 2:
Mein Objekt serialisieren und zu der Datei einen Stream erstellen.
Dann hätte ich einen Input bzw OutputStream den ich wieder verschlüsseln könnte weil ich ihn in ein byte[] umwandeln könnte.
Schließlich soll auf der EmpfängerSeite wieder entschlüsselt werden:
somit müsste er mir aus dem inputStream mein Objekt auslesen und returnen.
Ist das korrekt?
Ich hoffe auf viele Anmerkungen Antworten und Korrekturen.
Vielen Dank
LG
folgendes Problem:
Ich möchte ein mir übergebenes Objekt(selbsterstellte Klasse "Nachricht") namens "msg" verschlüsseln.
Die Klasse "Nachricht" kann aus Text,Bildern etc bestehen, was zuallererst nach meinen Erkenntnissen keine Rolle spielt, weil wir dann ja eh einen Stream haben bzw ein byte[].
Nach meinen Recherchen, gibt es jetzt zwei Wege:
1) Ich erstelle einen ObjectOutputStream und schreibe da mein "msg"-Objekt rein
2) Diesen oos (ObjectOutputStream) wandle ich dann in einen CipherOutputStream um.
3)In diesem Stream ist mein Objekt meiner Erkenntnis nach verschlüsselt.
Java:
public EncryptedMessage encrypt(PublicKey pubkey, Nachricht msg) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubkey);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
CipherOutputStream cos = new CipherOutputStream(bos, cipher); //verschlüsselt mit dem RSA Verfahren? bereits hier?
ObjectOutputStream oos = new ObjectOutputStream(cos);
oos.writeObject(msg);
byte[] encryptedBytes = bos.toByteArray();
oos.flush(); //warum flusht er hier?
//return new EncryptedMessage(encryptedBytes);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
An dieser Stelle könnte ich nun nach meinem Verständnis auch das verschlüsselte byte[] encryptedBytes returnen? Korrekt?
Oder Alternative 2:
Mein Objekt serialisieren und zu der Datei einen Stream erstellen.
Dann hätte ich einen Input bzw OutputStream den ich wieder verschlüsseln könnte weil ich ihn in ein byte[] umwandeln könnte.
Schließlich soll auf der EmpfängerSeite wieder entschlüsselt werden:
Java:
public Nachricht decrypt(PrivateKey privkey, EncryptedMessage m) {
if (m.getContent() != null && m.getContent().length > 0) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privkey);
ByteArrayInputStream bin = new ByteArrayInputStream(
m.getContent());
CipherInputStream cin = new CipherInputStream(bin, cipher);
ObjectInputStream in = new ObjectInputStream(cin);
return (Nachricht) in.readObject();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return null;
}
somit müsste er mir aus dem inputStream mein Objekt auslesen und returnen.
Ist das korrekt?
Ich hoffe auf viele Anmerkungen Antworten und Korrekturen.
Vielen Dank
LG