# Objekte verschlüsselt in Dateien speichern und laden



## Grasshopper (15. Dez 2006)

Guten Abend erstemal.

Ich versuche wie der Titel schon sagt ein Objekt zu verschlüssel und in eine Datei zu schreiben.

Die Grundlegende Idee ist einem ObjectOutputStream einen CipherOutputStream zu geben der wiederrum einen FileOutputStream benutzt. Soweit funktioniert das auch. Nach dem ich ein Objekt gespeichert habe existiert die Datei und sie ist auch nicht leer.

Das Problem tritt anschließend auf wenn ich versuche das Objekt wieder zu laden. Sobald ich die readObject Methode des ObjectInputStreams verwende bekomme ich eine java.io.EOFException.

Folgender Code zum speichern des Objekts:


```
Cipher c = Cipher.getInstance("DES");
Key key = new SecretKeySpec(this.keyString.getBytes(),"DES");
c.init( Cipher.ENCRYPT_MODE, key );

FileOutputStream fos = new FileOutputStream(this.storeFile);			
CipherOutputStream cos = new CipherOutputStream(fos,c);			
ObjectOutputStream oos = new ObjectOutputStream(cos);
			
oos.writeObject(object);
oos.flush();
```

Und jetzt der Code zum laden des Objekts


```
Cipher c = Cipher.getInstance("DES");
Key key = new SecretKeySpec(this.keyString.getBytes(),"DES");		
c.init( Cipher.DECRYPT_MODE, key );

FileInputStream fos = new FileInputStream(this.storeFile);			
CipherInputStream cos = new CipherInputStream(fos,c);			
ObjectInputStream oos = new ObjectInputStream(cos);
			
oos.readObject();
```

Hat irgendjemand eine Idee? 
Wär dankbar für jede Hilfe


----------



## Grasshopper (15. Dez 2006)

Hat sich erledigt.
habe die Lösung gefeunden, auch wenn sie mir nicht gefällt.
Scheint ein Fehler in Java selbst zu sein, da das ganze funktioniert wenn ich den Stream schließe. Offensichtlich schreibt er einen kleinen Rest doch nicht in die Datei obwohl ich den Stream flushe. 

Probleme dürfte es dann spätestens wieder geben wenn ich mit Sockets arbeiten möchte. 
Da ich das in den nächsten Tagen eigentlich vor hatte wär es hilfreich wenn jemand ne Idee hätte wie man das noch anders Lösen könnte.


----------



## HinselNova (24. Feb 2007)

Hi,

hiermit https://jaxb.dev.java.net/ kannst du Objekte in XML Dateien schreiben und natürlich wieder Objekte aus den XML Dateien erzeugen. Habe ich mal für ein Projekt in der Uni verwendet und hat ohne Probleme funktioniert. Dann einfach noch die XML Dateien verschlüsseln. Fertig.


----------

