Eigene Klasse verschlüsselt in Datei speichern

maximilian1

Mitglied
Hallo, ich habe eine eigene Klasse geschrieben die String,double,int,ArrayList und so weiter einhält. Diese speichere ich zur Zeit unverschlüsselt in eine Datei ab. Gibt es die möglichkeit einen verschlüsselten ObjectOutput bzw ObjectInputStream zum speichern zu verwenden. gibt es da schon fertige Lösungen?
 

maximilian1

Mitglied
okay danke ich nehmen mir jetzt mal:
Symmetrische Verschlsselung
vor.

Beschreibt dieser Code eine eigene Klasse und ist er komplett?

Java:
 protected final Cipher initCipher(boolean encryptMode)
           throws IOException, GeneralSecurityException {
    // Passwort-Hash berechnen und Schlüssel aufbereiten
    byte[] rawKey = initSymmetricKey(encryptMode);
    // Initialisierung des TripleDES-Schlüssels
    Key key;
    key = new SecretKeySpec(
            new DESedeKeySpec(rawKey).getKey(), ENC_ALG);

    // Initialisierung des Cipher-Objekts
    Cipher cipher;
    cipher = Cipher.getInstance(ENC_ALG);
    if (encryptMode)
      cipher.init(Cipher.ENCRYPT_MODE, key);
    else
      cipher.init(Cipher.DECRYPT_MODE, key);
    return cipher;
  }
 

maximilian1

Mitglied
Wie kann ich ihm hier sagen, welches Objekt er verschlüsseln soll?

Java:
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

public class WriteDES
{
  public static void main( String args[] ) throws Exception
  {
    Cipher c = Cipher.getInstance( "DES" );

    Key k = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );

    OutputStream out = new FileOutputStream( "C:/t.des" );
    CipherOutputStream cos = new CipherOutputStream( out, c );

    cos.write( "Das wird anders werden".getBytes() );

    cos.close();
  }
}
 

theuserbl

Bekanntes Mitglied
Sehe gerade.

In der 5. Auflage der Insel gab es ein Beispielprogramm zum Ver4schlüsseln:
Java ist auch eine Insel – 25.5 Verschlüsseln von Daten(-strömen)

In der 8. Auflage gab es ein Beispielprogramm zum Ver- und Entschlüsseln:
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 26.6 Verschlüsseln von Daten(-strömen)

In der 9. Auflage wurde das Thema komplett gestrichen:
Galileo Computing :: Java ist auch eine Insel –

Einer der Bücher, bei denen man mehrere Auflagen parallel braucht. Da gilt nicht, daß in der letzten Auflage alles der vorigen Auflagen und noch mehr drin ist.
 

maximilian1

Mitglied
Danke, ich habs jetzt soweit hinbekommen, das ich speicher und lese, aber ich bekomme eine Fehlermeldung:

java.io.StreamCorruptedException: invalid stream header: 18ED4F6D
at java.io_ObjectInputStream.readStreamHeader(Unknown Source)
at java.io_ObjectInputStream.<init>(Unknown Source)
at core.Gui.loadDatabaseCrypted(Gui.java:1093)
at core.Gui.<init>(Gui.java:195)
at core.Gui$1.run(Gui.java:217)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Hier ist der Code:
schreiben:
Java:
public void saveDatabaseCryped( String path ) throws Exception {
	
	Cipher c = Cipher.getInstance( "DES" );
    Key k = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );
    OutputStream out = new FileOutputStream( path );
    CipherOutputStream cos = new CipherOutputStream( out, c );
    ObjectOutputStream oos = new ObjectOutputStream(cos);
    oos.writeObject( mainUserAccount );
    cos.close();
    oos.close();
}

lesen:
Java:
public void loadDatabaseCrypted() throws Exception{
	Cipher c = Cipher.getInstance( "DES" );
    Key k = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );
    InputStream in = new FileInputStream( "databasework" );
    CipherInputStream cis = new CipherInputStream( in, c );
    ObjectInputStream ois = new ObjectInputStream(cis);
    mainUserAccount = (Benutzerkonto) ois.readObject();
    cis.close();
    ois.close();
}

was ist da falsch?
 

theuserbl

Bekanntes Mitglied
Hmmm.. Scheint irgendetwas mit dem ObjectInputStream oder so zu tun zu haben.
Also wenn man ObjectInputSteream auskommentiert funktioniert es.

Hier noch mal Dein Code in einem kompletten Programm:

Code:
import java.io.*; 
import java.security.Key; 
import javax.crypto.*; 
import javax.crypto.spec.SecretKeySpec; 
import sun.misc.*; 

public class Z {
  String mainUserAccount = "dw";

  public void saveDatabaseCryped( String path ) {
    
    try {
    Cipher c = Cipher.getInstance( "DES" );
    Key k = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );
    OutputStream out = new FileOutputStream( path );
    CipherOutputStream cos = new CipherOutputStream( out, c );
    ObjectOutputStream oos = new ObjectOutputStream(cos);
    oos.writeObject( mainUserAccount );
    oos.close();
    cos.close();
    out.close();
    } catch (Exception e) {
      System.out.println("+"+e);
    }
  }


  public void loadDatabaseCrypted() {
    try {
    Cipher c = Cipher.getInstance( "DES" );
    Key k = new SecretKeySpec( "01234567".getBytes(), "DES" );
    c.init( Cipher.ENCRYPT_MODE, k );
    InputStream in = new FileInputStream( "databasework" );
    CipherInputStream cis = new CipherInputStream( in, c );
    ObjectInputStream ois = new ObjectInputStream(cis);
////    mainUserAccount = (Benutzerkonto) ois.readObject();
    mainUserAccount = (String) ois.readObject();
    ois.close();
    cis.close();
    in.close();
    } catch (Exception e) {
      System.out.println("*"+e);
    }
  }

  public Z() {
    saveDatabaseCryped("databasework");
    loadDatabaseCrypted();

  }

  public static void main(String[] args) {
     Z j = new Z();
  }

}

Die Fehlermeldung kommt bei mir auch.


Btw: in.close() und out.close() fehlen in Deinem Programm.
Aber mit denen funzt es auch nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
B Klassen Eigene Klasse als Array benutzen Allgemeine Java-Themen 3
P Eigene Exception Klasse Allgemeine Java-Themen 7
S OOP Problembereichsmodell: Bestehende Framework Klasse in eigene Klassenstruktur einbinden Allgemeine Java-Themen 9
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
S Methoden Eigene Klasse als Rückgabewert Allgemeine Java-Themen 6
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
M Eigene Factory Klasse Allgemeine Java-Themen 21
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
S Instanz in einer Klasse erstellen, und dem Konstruktor die eigene Klasse mitgeben Allgemeine Java-Themen 4
P Eigene Klasse kopieren die auf sich selbst refferenziert Allgemeine Java-Themen 8
S eigene Klasse die JButton extended - als Liste! Allgemeine Java-Themen 6
J Kann eigene Klasse nicht ermitteln Allgemeine Java-Themen 4
W eigene event-Klasse, event posten Allgemeine Java-Themen 2
M Eigene Exception Klasse Allgemeine Java-Themen 4
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
RalleYTN Eigene ScriptEngine? Allgemeine Java-Themen 14
L Eigene Dependency Injections definieren? Allgemeine Java-Themen 4
K Eigene API erstellen? Allgemeine Java-Themen 13
T Best Practice Eigene GUI programmieren | MouseMotion Detection Allgemeine Java-Themen 3
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
J eigene Java Bibliothek Allgemeine Java-Themen 2
M Output einer anderen/externen .jar in eigene JTextArea Allgemeine Java-Themen 4
D Eigene/r Collection/Container Allgemeine Java-Themen 3
F Eigene .jar mit anderer .jar öffnen Allgemeine Java-Themen 7
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
H Best Practice Ideensuche: Flexibel hinzufügbare eigene Parser Allgemeine Java-Themen 6
T OOP Die eigene Bruchklasse Allgemeine Java-Themen 11
J Java - Eigene DLL importieren Allgemeine Java-Themen 25
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
S eigene regEx schreiben Allgemeine Java-Themen 4
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
N Geodaten für eigene Routenplanung Allgemeine Java-Themen 5
C Eigene Sounddateien schreiben Allgemeine Java-Themen 12
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
S eigene Update Funktion Allgemeine Java-Themen 5
H2SO3- getMethods(): eigene methoden rausfinden Allgemeine Java-Themen 4
C eine eigene Javadoc erstelen Allgemeine Java-Themen 3
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
S Eigene Bibliothek Allgemeine Java-Themen 2
M Eigene Dateiendung? Allgemeine Java-Themen 3
M Plugins für eigene Programme Allgemeine Java-Themen 3
S Eigene Events feuern Allgemeine Java-Themen 3
A Eigene Java Plugins entwickeln - wie optimal? Allgemeine Java-Themen 14
R Eigene ArrayList vom Typ Short, Integer oder Double Allgemeine Java-Themen 4
U Eigene "Dining Philosopher" Interpretation weckt Philos nie auf Allgemeine Java-Themen 2
0x7F800000 Wovon eigene Events für spezialisierte JComponents ableiten? Allgemeine Java-Themen 2
SuperSeppel13 Packete der Java Bibliothek ins eigene Prjekt integrieren Allgemeine Java-Themen 4
G Umgebungsvariabeln auslesen (Path, Temp, oder eigene) Allgemeine Java-Themen 2
T Eigene PID ermitteln! Allgemeine Java-Themen 3
D Icon für eigene Dateiendung Allgemeine Java-Themen 7
G Eigene "Speicherverwaltung" Allgemeine Java-Themen 5
H eigene Annotations Allgemeine Java-Themen 2
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
A Eigene Wrapper-Klassen Allgemeine Java-Themen 2
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
U eigene Datenstruktur ArrayList<String> nach Object [][ Allgemeine Java-Themen 2
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
B eigene Klassen verkaufen Allgemeine Java-Themen 2
reibi Eigene exception mit feld "serialVersionUID" Allgemeine Java-Themen 3
M Eigene .jar in anderes Programm importieren[eclipse] Allgemeine Java-Themen 6
T Eigene Libary Allgemeine Java-Themen 6
E Eigene Exception Allgemeine Java-Themen 11
Q Bibliotheken mit ins eigene Jar aufnehmen Allgemeine Java-Themen 4
M eigene Objekte vergleichen Allgemeine Java-Themen 6
K log4j - eigene Info-Ausgaben Allgemeine Java-Themen 5
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
G JWindow verschieben bei mousedragged auf eigene titelleiste Allgemeine Java-Themen 3
N Methoden in eigene Dateien auslagern? Allgemeine Java-Themen 10
B Eigene Datentypen Allgemeine Java-Themen 5
G Brauche hilfe bei JMF: Wie eigene Streaming Data Source! Allgemeine Java-Themen 4
G eigene klassen die ein jar verwenden als neues jar erstellen Allgemeine Java-Themen 4
O Externe Jars in eigene JAr packen in Eclipse Allgemeine Java-Themen 5
R Updateprozedur ü. Internet fürs eigene Programm? Allgemeine Java-Themen 24
G eigene uhrzeit in einer java applikation führen Allgemeine Java-Themen 19
R Eigene Konfigurationsdatei für größere Projekte. Allgemeine Java-Themen 4
J Eigene Callback Methode? Allgemeine Java-Themen 3
S eigene evetns erstellen Allgemeine Java-Themen 5
K eigene GUI Komponente wird nicht angezeigt Allgemeine Java-Themen 3
D Eigene Classes aus anderen .java-Dateien Allgemeine Java-Themen 2
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5
C Die Konsole ins eigene Programm einbauen Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben