Mehrere Objekte verschlüsselt serialisieren

Hallo,

ich habe eine Liste an Objekten, welche unterschiedliche Daten in Form von Strings enthalten.
Diese Liste mit Objekten möchte ich nun in eine Datei abspeichern, welche ich einfach wieder laden kann.

Mir ist jedoch wichtig, dass der eigentliche Inhalt der Datei NICHT einfach durchschaubar ist (wie es bei der normalen Serialisierung (XML oder Object) ja leider der Fall ist.

Nun habe ich es bisher so gehandhabt:
-ich Serialisiere die Liste ganz normal in eine Datei
-diese Datei lese ich dann Zeile für Zeile als String ein
-diesen (gesamt)String verschlüssele ich dann (AES)
-den verschlüsselten String speichere ich dann wieder in eine Datei und überschreibe die alte
(einlesen analog dazu)

Bisher hat das auch ganz gut geklappt.
Nun ist meine Liste an Objekten jedoch funktionsbedingt etwas größer geworden - es werden mehr Daten abgelegt.
Nun tritt sporadisch der Fehler auf, dass vereinzelt Zeichen falsch eingelesen wurden...

Bedeutet:
Von 500 Daten, hat eine "Date" plötzlich einen anderen Wert.
Java wirft mir jedoch keine Exception, dass der InputStream beim Deserialisieren einen Fehler aufweist...
(Ich merke die Abweichung, da ich die Daten anschließend prüfe)

Das Problem liegt eindeutig in der Verschlüsselung, wenn ich diese weg lasse, gibt es kein Problem.

Woher kommt das?
Was kann ich tun?

Wie könnte ich alternativ meine Objekt Liste speichern?
(Wichtig hierbei: die Objekt List MUSS verschlüsselt sein. Die verschlüsselte Datei sollte NUR aus normalen Chars bestehen, keine cryptischen Sachen wie sie von der normalen Serialisierung produziert werden.)

Danke schonmal :)
 

Ikaron

Bekanntes Mitglied
Ich glaube, sinnvoller wären verschachtelte Streams. Z.B:
Java:
ObjectOutputStream oout = new ObjectOutputStream(new VerschlüsselterOutputStream(new FileOutputStream(...)));
Dafür musst du natürlich noch die Klasse "VerschlüsselterOutputStream" implementieren (und den dazugehörigen InputStream). Da gibt es aber sicher schon Javainterne Klassen, die diese Funktionalität bereitstellen. Vielleicht wäre CypherOut/InputStream ja was. Das könnte dein Problem schon lösen.
 
Danke für die Antwort.

Ich habe das Problem nun wie folgt gelöst:

Daten -> in Object Array serialisieren mit ObjectOutput -> diesen decodiere ich in base64 als string -> diesen String verschlüssele ich mit AES

Rückwärts klappt gut :)
 

Ikaron

Bekanntes Mitglied
Man kann es auch übertreiben, aber wenn du diesen Sicherheitsgrad erreichen willst, dann wohl durchaus angebracht. Was ich nicht verstehe ist die "Zwischenspeicherung" im Objekt-Array. Du kannst ja auch direkt writeObject(speziellerDatensatz) verwenden, oder seh ich das falsch?
 
Ups, habe mich verschrieben.

Meinte Byte Array.

Schreibe es erst in ein Byte Array, um innerhalb der VM/des Programms den Code in Base64 zu decoden & verschlüsseln.
Sonst würde ich es einmal unverschlüsselt als Datei schreiben. (wenn auch für wenige milisekunden)
 

Ikaron

Bekanntes Mitglied
Ups, habe mich verschrieben.

Meinte Byte Array.

Schreibe es erst in ein Byte Array, um innerhalb der VM/des Programms den Code in Base64 zu decoden & verschlüsseln.
Sonst würde ich es einmal unverschlüsselt als Datei schreiben. (wenn auch für wenige milisekunden)

Auch ein Speichern in ein Byte-Array kann mit verschachtelten Streams umgangen werden, vorausgesetzt, Base64 braucht nur ein paar Byte und nicht die ganze Kette.

Jetzt ist es ja:
Daten -> byte[] -> String -> String(AES) -> Datei
So wäre es:
Daten -> String -> String(AES) -> Datei

Ich kenn mich nicht mit AES aus, aber so wie ich das sehe, braucht dieser ja eine gewisse Anzahl an Zeichen (pro Block), korrekt? Dann kannst du sogar den 2. String überspringen, indem du einen weiteren (eigenen) Stream (AESOutputStream) schachtelst.
Daten -> String(AES) -> Datei

Die Schachtelung kann in diesem Fall den Speicherverbrauch erheblich verringern, so wie ich das sehe mindestens halbieren, wäre also wohl eine Überlegung wert. Außerdem wird die Verarbeitung (um einen ähnlichen Faktor) schneller.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
berserkerdq2 Ist es schlechter Programmierstyle mehrere Panes aufeinander zu machen? Allgemeine Java-Themen 1
Tarrew OpenAPI Schnittstelle - Mehrere Kunden mit unterschiedlichen Zugriffsrechten Allgemeine Java-Themen 2
A Mehrere for-Schleifen Allgemeine Java-Themen 2
M Mehrere Sounds Allgemeine Java-Themen 3
M Mehrere Ressourcen in einem package ablegen Allgemeine Java-Themen 1
Avalon DTO aus mehrere Entitäten erstellen Allgemeine Java-Themen 5
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
Curtis_MC Collections Liste anhand mehrere Kriterien sortieren Allgemeine Java-Themen 6
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
L Mehrere .Jar Files aufrufen Allgemeine Java-Themen 9
L mehrere Methoden Allgemeine Java-Themen 19
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
T String mehrere Worte Allgemeine Java-Themen 2
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
S libGDX mehrere Texturen zu Einer zusammenfassen Allgemeine Java-Themen 0
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
OnDemand CSV parsen mehrere Zeilen Allgemeine Java-Themen 22
K Mehrere Programmiersprachen gleichzeitig lernen Allgemeine Java-Themen 3
C Mehrere Seiten drucken in Hoch- und Querformat Allgemeine Java-Themen 0
perlenfischer1984 Mehrere Komponenten erstellen Allgemeine Java-Themen 3
F AWT Mehrere Tastatureingaben verarbeiten Allgemeine Java-Themen 5
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
HarleyDavidson Best Practice Integer-Zahlenfolge über mehrere Programmstarts Allgemeine Java-Themen 7
F Mehrere JTables' drucken Allgemeine Java-Themen 0
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
P Mehrere Java Versionen auf dem Rechner Allgemeine Java-Themen 3
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
2 Mehrere Uhrzeiten Sortieren Allgemeine Java-Themen 2
T Jsoup: Mehrere Links nacheinander parsen Allgemeine Java-Themen 11
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
K GUI-Entwicklung - Dispose, enabling und mehrere Controller Allgemeine Java-Themen 1
M Eclipse Mehrere Threads, mehrere Konsolen Allgemeine Java-Themen 4
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
S Tool um mehrere Klassen in einer Klasse vereinen? Allgemeine Java-Themen 6
K Mehrere Arrays auf einmal erstellen Allgemeine Java-Themen 2
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
J JFreeChart - Mehrere X-Achsen Einteilungen Allgemeine Java-Themen 3
S Mehrere Shapes "malen" Allgemeine Java-Themen 3
M Input/Output Mehrere Bilder aus Resourcen auslesen Allgemeine Java-Themen 8
J Erste Schritte Mehrere Mauszeiger für Ping Pong Game Allgemeine Java-Themen 7
P Mehrere MP3s abspielen Allgemeine Java-Themen 3
M Mehrere CRLF entfernen Allgemeine Java-Themen 13
F Mehrere Threads - ein Stack Allgemeine Java-Themen 6
K Mehrere JVMs die auf eine Klasse mit statischen Variablen zugreift Allgemeine Java-Themen 19
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G mehrere Threads starten/stoppen Allgemeine Java-Themen 4
A Email versenden mehrere Zeilen Allgemeine Java-Themen 10
D Mehrere String-Werte in eine Tabellen-Zelle schreiben Allgemeine Java-Themen 8
R JTree - Mehrere Roots Allgemeine Java-Themen 6
Beckenbauer Mehrere Paragraphe in eine Word Datei schreiben Allgemeine Java-Themen 4
H Mehrere Anwendungen von Java kontrollieren lassen Allgemeine Java-Themen 10
T Edit: JLabel+MouseListener oeffnet mehrere Instanzen Allgemeine Java-Themen 5
O split mit einem ODER mehrere Tabulatoren oder Leerzeichen Allgemeine Java-Themen 6
M JFreeChart mehrere PieCharts erstellen Allgemeine Java-Themen 2
S Wie kann ein Observer mehrere Observables beobachten? Allgemeine Java-Themen 9
T Synchronisation von Listen bei Zugriffen durch mehrere Prozesse Allgemeine Java-Themen 15
B mehrere services in einem client Allgemeine Java-Themen 10
Meldanor Speichern der Datenbank - Lohnen sich mehrere Threads? Allgemeine Java-Themen 2
G Process - mehrere Commands?! Allgemeine Java-Themen 2
O Mehrere Exemplare(Kopieen) drucken Allgemeine Java-Themen 2
S log4j Logging über mehrere Klassen Allgemeine Java-Themen 13
F 1 Key - mehrere Values Allgemeine Java-Themen 3
G JOGL mehrere GLCanvas erstellen Allgemeine Java-Themen 2
S Mehrere Listen ineinander verschachteln Allgemeine Java-Themen 22
P Java3D mehrere Ebenen parallel zu yz-Ebene Allgemeine Java-Themen 9
R mehrere jar Dateien kompinieren Allgemeine Java-Themen 14
P Mehrere Instanzen der selben Appl. verhindern Allgemeine Java-Themen 12
M Scanner-Methode: Mehrere Eingaben mit Exception behandeln Allgemeine Java-Themen 10
I Wie kann ich mehrere Mp3 Tags ausgeben? Allgemeine Java-Themen 6
I Mehrere MP3 Dateien einlesen? Allgemeine Java-Themen 3
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
C ArrayList sortieren (mehrere Kriterien) Allgemeine Java-Themen 6
N mehrere klassen extenden Allgemeine Java-Themen 33
G Oracle will mehrere hundert Produkte patchen Allgemeine Java-Themen 5
F Logger in mehrere Dateien mit log4J Allgemeine Java-Themen 4
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
Daniel_L Mehrere (XML-)Datei aus einer ZIP-Datei auslesen Allgemeine Java-Themen 4
V Mehrere main() in jar, wie starten? Allgemeine Java-Themen 4
A Problem: Mehrere PDF-Files nacheinander Öffnen Allgemeine Java-Themen 12
D Mit Linux mehrere Kommandos in einem Subprozeß Allgemeine Java-Themen 3
D Suche sowas wie Map nur für mehrere Werte Allgemeine Java-Themen 13
V JFilechooser, mehrere Datein selektieren und Reihenfolge? Allgemeine Java-Themen 2
G mehrere Threads verwalten? Allgemeine Java-Themen 14
K Applet dass auf mehrere Bibliotheken zugreift Allgemeine Java-Themen 13
F mehrere Verzeichnisse als Parameter Allgemeine Java-Themen 15
G mehrere url's in ein array (problem mit // ) Allgemeine Java-Themen 7
P mehrere super klassen Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben