Ver/entschlüsseln von dateien

rachid1981

Mitglied
versuche gerede hier Inhalt ein verschlüsselte datei zu entschlüsseln und ausgeben
kann mir bitte jemand sagen warum das nicht funktioniert
danke im voraus

String zeile1;
BufferedReader dec = new BufferedReader(new FileReader(
"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/verschtest.txt"));
while((zeile1 = dec.readLine()) != null) {
System.out.println("DEcode :" + zeile1);
InputStream bais = new ByteArrayInputStream(zeile1.getBytes());
decode(bais, "01234567");
byte[] s = new sun.misc.BASE64Decoder().decodeBuffer(bais);
System.out.println("entschlüsselt : " + s.toString());

}
static byte[] decode(InputStream is, String pass) throws Exception {
Cipher c = Cipher.getInstance("DES");
SecretKeySpec k = new SecretKeySpec(pass.getBytes(), "DES");
c.init(Cipher.DECRYPT_MODE, k);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
CipherInputStream cis = new CipherInputStream(is, c);

for(int b; (b = cis.read()) != -1;) {
bos.write(b);
}
 

rachid1981

Mitglied
oh ja Sorry wusste ich nicht

Java:
String zeile = null;
		String zeile1;
		BufferedReader in = new BufferedReader(new FileReader(
				"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/test.txt"));

		BufferedReader dec = new BufferedReader(new FileReader(
				"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/verschtest.txt"));

		
		chiffre = new File("D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/verschtest.txt");

		FileOutputStream fout = new FileOutputStream(chiffre);
		OutputStreamWriter osw = new OutputStreamWriter(fout, "UTF-8");
		BufferedWriter bw = new BufferedWriter(osw);

		while((zeile = in.readLine()) != null) {
			ByteArrayOutputStream out = new ByteArrayOutputStream();
			System.out.println("plain: " + zeile);
			encode(zeile.getBytes(), out, "01234567");

			String s = new sun.misc.BASE64Encoder().encode(out.toByteArray());

			System.out.println("verschlüsselt: " + s);
			daten.add(s);
			bw.write(s);
			bw.newLine();
		}
		in.close();
		bw.close();
		
				while((zeile1 = dec.readLine()) != null) {
			//ByteArrayInputStream byt = new ByteArrayInputStream(null);
			System.out.println("DEcode :" + zeile1);
			InputStream bais = new ByteArrayInputStream(zeile1.getBytes());
			decode(bais, "01234567");
			byte[] s = new sun.misc.BASE64Decoder().decodeBuffer(bais);
			System.out.println("entschlüsselt : " + new String(s));

		}
	}


	static void encode(byte[] bytes, OutputStream out, String pass)
			throws Exception {
		Cipher c = Cipher.getInstance("DES");
		SecretKeySpec k = new SecretKeySpec(pass.getBytes(), "DES");
		c.init(Cipher.ENCRYPT_MODE, k);

		OutputStream cos = new CipherOutputStream(out, c);
		cos.write(bytes);
		cos.close();
	}


	static byte[] decode(InputStream is, String pass) throws Exception {
		Cipher c = Cipher.getInstance("DES");
		SecretKeySpec k = new SecretKeySpec(pass.getBytes(), "DES");
		c.init(Cipher.DECRYPT_MODE, k);
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		CipherInputStream cis = new CipherInputStream(is, c);

		for(int b; (b = cis.read()) != -1;) {
			bos.write(b);
		}

		cis.close();
		return bos.toByteArray();
	}
 
T

Tomate_Salat

Gast
Thread.reset(); :joke: scnr

Ungetestet. Auch wenn ich seltenst mit Verschlüsselungen arbeite, aber: Ich denke es liegt daran, dass du einen neuen SecretKeySpec erstellst. Wäre auch iwie sinnfrei, wenn du mit jedem Schlüssel die Datei wieder entschlüsseln könntest.
 
S

SlaterB

Gast
du reihst wahllos Befehle aneinander, ohne richtiges Konzept, Verschlüsseln geht ja noch, wenn von dir dann gut,
aber Entschlüsseln musst du dann konzentriert passend aufbauen,
wenn beim Verschlüsseln ganz am Ende BASE64Encoder ankommt damit ein schöner String gespeichert werden kann,
dann muss beim Entschlüsseln das BASE64Decode als erstes passieren, um diesen Schritt umzukehren! usw.

da ich jetzt so viel ausprobiert habe schreibe ich den ganzen Code:
Java:
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        String zeile;
        String zeile1;
        StringReader r = new StringReader("Hello World");
        BufferedReader in = new BufferedReader(r);


        File chiffre = new File("verschtest.txt");

        FileOutputStream fout = new FileOutputStream(chiffre);
        OutputStreamWriter osw = new OutputStreamWriter(fout, "UTF-8");
        BufferedWriter bw = new BufferedWriter(osw);

        while ((zeile = in.readLine()) != null)
        {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            System.out.println("plain: " + zeile);
            byte[] b1 = zeile.getBytes();
            System.out.println("b1: " + b1.length + " - " + Arrays.toString(b1));
            encode(zeile.getBytes(), out, "01234567");
            byte[] b2 = out.toByteArray();
            System.out.println("b2: " + b2.length + " - " + Arrays.toString(b2));
            String st = new sun.misc.BASE64Encoder().encode(b2);

            System.out.println("verschlüsselt: " + st);
            bw.write(st);
            bw.newLine();
        }
        in.close();
        bw.close();

        System.out.println("--------------");

        BufferedReader dec = new BufferedReader(new FileReader(chiffre));

        while ((zeile1 = dec.readLine()) != null)
        {
            System.out.println("DEcode       : " + zeile1);
            byte[] b2 = new sun.misc.BASE64Decoder().decodeBuffer(zeile1);
            System.out.println("b2: " + b2.length + " - " + Arrays.toString(b2));

            InputStream bais = new ByteArrayInputStream(b2);
            byte[] b1 = decode(bais, "01234567");
            System.out.println("b1: " + b1.length + " - " + Arrays.toString(b1));

            System.out.println("entschlüsselt: " + new String(b1));

        }
    }

    static void encode(byte[] bytes, OutputStream out, String pass)
        throws Exception
    {
        Cipher c = Cipher.getInstance("DES");
        SecretKeySpec k = new SecretKeySpec(pass.getBytes(), "DES");
        c.init(Cipher.ENCRYPT_MODE, k);

        OutputStream cos = new CipherOutputStream(out, c);
        cos.write(bytes);
        cos.close();
    }


    static byte[] decode(InputStream is, String pass)
        throws Exception
    {
        Cipher c = Cipher.getInstance("DES");
        SecretKeySpec k = new SecretKeySpec(pass.getBytes(), "DES");
        c.init(Cipher.DECRYPT_MODE, k);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        CipherInputStream cis = new CipherInputStream(is, c);

        for (int b; (b = cis.read()) != -1;)
        {
            bos.write(b);
        }

        cis.close();
        return bos.toByteArray();
    }
}
Ausgabe:
Code:
plain: Hello World
b1: 11 - [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
b2: 16 - [36, -42, 100, -97, 75, 41, -88, -12, -67, 41, -109, -96, -67, 64, -114, -90]
verschlüsselt: JNZkn0spqPS9KZOgvUCOpg==
--------------
DEcode       : JNZkn0spqPS9KZOgvUCOpg==
b2: 16 - [36, -42, 100, -97, 75, 41, -88, -12, -67, 41, -109, -96, -67, 64, -114, -90]
b1: 11 - [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
entschlüsselt: Hello World

edit: wenn der OutputStreamWriter UTF-8 ist, dann sollte das Lesen auch wieder mit UTF-8 passieren,
überall auf Symmetrie achten, wegen BASE64-Speicherung hier vielleicht egal/ unnötig
 
Zuletzt bearbeitet von einem Moderator:

rachid1981

Mitglied
hallo erstmal zusammen
also ich versuche mit dem selben cod ein word document zu ver/entschlüsseln aber geht nicht kann mir jemand bitte sagen warum und wie ich das löse
also bei .txt .xml funktioniert gut
Danke
 
S

SlaterB

Gast
ein Word-Dokument bzw. alles was nicht mit Texteditor lesbar ist, darfst du nicht mit BufferedReader als String interpretiert einlesen,
dabei gehen Informationen verloren

da du aus dem String eh sofort bytes machen würdest kannst du aus einem InputStream direkt bytes lesen,
der Teil danach mit BASE64Encoder usw. ist nicht betroffen, achte nur auf korrektes Einlesen von Array b1 und am Ende auch b1 direkt speichern,
prüfe mit Ausgaben ob die Arrays gleichbleiben (evtl. nur den Anfang wenn Tausende bis Millionen..)

testweise kannst du auch erstmal nur b1 einlesen, ausgeben und gleich wieder speichern,
ist dann die Word-Datei noch korrekt?
 
Zuletzt bearbeitet von einem Moderator:

rachid1981

Mitglied
kannst du mir BITTE ein beispiel zeigen, ich weiss ganz ehrlich nicht wie ich das mache

habe versucht statt BufferedReader mit InputStream in = new FileInputStream(Datei)
aus dem datei zu lesen aber geht auch nicht
Danke dir
 
S

SlaterB

Gast
Suchmaschine: java fileinputstream example
oder es gibt auch Lehrücher..

wenn kein Beispiel mit Einlesen von größeren byte[] dabei ist, dann noch genauer suchen oder sag Bescheid
 

rachid1981

Mitglied
Java:
InputStreamReader inn = new InputStreamReader(new FileInputStream(pfadDatei),
									"UTF8");
BufferedReader in = new BufferedReader(inn);
ich habe die datei jetzt so gelsen und den rest was ich nicht wie ich das mache
bitte um weitere hilfe
 
S

SlaterB

Gast
das BufferedReader stört hatte ich gesagt, oder?
hier von den Links speziell einen mit byte[]:
Copy a file with read(byte[] data) and write(byte[] data) : FileInputStreamFileJava Tutorial

grundsätzlich kannst du natürlich nichts 1:1 übernehmen
sondern brauchst einen Kopf zum Denken, weswegen Computer selber ja nicht (gut) programmieren können,
du musst den Code verstehen (evtl. intelligente Fragen formulieren) und geeignet kopieren,
überlegen welche Schleife wo hingehört, was mit jedem byte[] passiert,
auf Sonderfälle wie nicht ganz gefülltes letztes Array achten usw.

all das kann man nicht erklären und ich werde es auch nicht für dich programmieren..

es gibt übrigens auch Lehrbücher mit langen Kapiteln voller wichtiger Details zu Dateien, Streams..,
'ich kann nix, bitte helfen' ist vollkommen unproduktiv
 
Zuletzt bearbeitet von einem Moderator:

rachid1981

Mitglied
Java:
public static byte[] encrypt(byte[] d, KeyPair keyPair) throws Exception {

		Cipher cipher = Cipher.getInstance("RSA");

		cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
		int blocksize = cipher.getBlockSize();
		//byte[] inBytes = new byte[blocksize];

		byte[] encrypt = cipher.doFinal(d);

		return encrypt;

	}


	public static byte[] decrypt(byte[] d, KeyPair keyPair) throws Exception {

		Cipher cipher = Cipher.getInstance("RSA");

		cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
		//cipher.update(d);

		byte[] decrypt = cipher.doFinal(d);

		return decrypt;

	}


	public static void main(String[] args) throws IOException, Exception {
		beispiel bp = new beispiel();
		KeyPair ke = KeyPairGenerator.getInstance("RSA").generateKeyPair();
		//KeyGenerator ke = KeyGenerator.getInstance("AES");

		//		SecureRandom random = SecureRandom.getInstance(null”SHA1PRNG”,”SUN”);

		//Verschlüsseln
		File file = new File("D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/hello.docx");

		FileInputStream fis = new FileInputStream(
						"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/hello.docx");
		FileOutputStream fos = new FileOutputStream(
						"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/verschtest.txt");

		byte[] encrypt = new byte[1];
		while(fis.read(encrypt) != -1) {

			fos.write(bp.encrypt(encrypt, ke));
		}

		System.out.println("Verschlüsselt");
		// entschlüsseln
		FileInputStream in = new FileInputStream(
				"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/verschtest.txt");
		FileOutputStream out = new FileOutputStream(
				"D:\\Workspace-Helios/JavaGlobals_7.0.0/globals/encryption/helloo.docx");
		byte[] decrypt = new byte[128];
		while(in.read(decrypt) != -1) {
			out.write(bp.decrypt(decrypt, ke));
		}
		System.out.println("Entschlüsselt");

	}
das funktioniert aber es ist sehr langsam bis er das entschlüsselt und wenn ich mein byte[] encrypt = new byte[1]; auf byte[] encrypt = new byte[128]; vergrössere dann krige ich ein fehler data ist gross
hat jemand eine Idee wie ich das löse?
Danke
 
T

Tomate_Salat

Gast
RSA ist wirklich langsam. Eine Möglichkeit wäre z.B. folgendes Szenario:
du verschlüsselt deine Daten mittels XOR
den Schlüssel für die XOR-Verschlüsselung verschlüsselst du mit RSA

Somit musst du zum ver/entschlüsseln nicht die kompletten Daten mittels RSA sichern, sondern nur den Schlüssel für die eigentl. verschlüsselung (ich hasse das Wort schlüssel mitlerweile).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Passwort entschlüsseln Allgemeine Java-Themen 8
E Entschlüsseln einer Datei die mit DEC verschlüsselt wurde Allgemeine Java-Themen 2
T Datei beim schreiben verschlüsseln beim lesen entschlüsseln Allgemeine Java-Themen 11
B In Java verschlüsseln - mit C# entschlüsseln Allgemeine Java-Themen 7
Zed Exception entschlüsseln Allgemeine Java-Themen 6
S Verschlüsselte Mails entschlüsseln! Allgemeine Java-Themen 2
N Byte-Code entschlüsseln (Bitmasks?) Allgemeine Java-Themen 3
D gewisse Zeichen sind nach dem entschlüsseln anders Allgemeine Java-Themen 2
P HMACMD5- Verschlüsselung entschlüsseln Allgemeine Java-Themen 2
C Ver/Entschlüsseln von Strings Allgemeine Java-Themen 5
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
G Dateien lesen Allgemeine Java-Themen 3
OnDemand Unterschiedliche jar Dateien zusammen führen Allgemeine Java-Themen 8
A Sicheres Löschen von Dateien Allgemeine Java-Themen 7
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
Master3000 Dateien zwischen verschiedenen Netzwerken senden Allgemeine Java-Themen 17
L Jar Dateien in Classpath laden ab JDK 9+ Allgemeine Java-Themen 11
d.lumpi JDA eclipse dateien versenden Allgemeine Java-Themen 4
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
L Dateien richtig auslesen Allgemeine Java-Themen 6
L Eclipse Runnable Jar mit Dateien Allgemeine Java-Themen 8
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
MiMa Logging mit log4j2 in verschiedene Dateien? Allgemeine Java-Themen 22
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
O jar und EXE Dateien, Pfade zur Laufzeit Allgemeine Java-Themen 1
W Dateien werden nicht gelöscht - warum? Allgemeine Java-Themen 12
B Dateien / Bilder von "webapp" Ordner bekommen? Allgemeine Java-Themen 1
P Erste Schritte Dateien löschen Allgemeine Java-Themen 4
H Erste Schritte Ausführbare Dateien lassen sich nicht starten Allgemeine Java-Themen 5
I Java als exe veröffentlichen inkl. kompletter Dateien Allgemeine Java-Themen 4
M Drucken von Dateien Allgemeine Java-Themen 10
J jar Dateien unter Windows 7 mit spezifischer jdk öffnen Allgemeine Java-Themen 2
I Laden von Informationen aus Dateien: Austauschbarkeit: 2 Dateien sinnvoll? Allgemeine Java-Themen 2
N Temporäre Dateien Allgemeine Java-Themen 3
Bluedaishi Druck Probleme mit PDF dateien Allgemeine Java-Themen 4
M Dateien schneller kopieren Allgemeine Java-Themen 1
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
K Große JSON-Dateien schnell und effizient verarbeiten Allgemeine Java-Themen 16
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
V Eclipse .class Dateien Allgemeine Java-Themen 9
B Download von dateien Allgemeine Java-Themen 2
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
MiMa Log4j in Dateien mit eigenem Namen schreiben Allgemeine Java-Themen 3
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
C Dateien in Jar aufrufen Allgemeine Java-Themen 14
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
JavaWolf165 Externe .jar-Dateien in .jar-Datei intigrieren Allgemeine Java-Themen 0
X Dateien für Benutzer Sperren Allgemeine Java-Themen 4
D Dateien aus den Internet herunterladen Allgemeine Java-Themen 6
L Methoden Dateien älter als 30 Tage? Allgemeine Java-Themen 11
J .exe Dateien werden nicht gestartet obwohl Pfad richtig Allgemeine Java-Themen 6
RalleYTN Classpath Native Dateien(DLL, SO, JNILIB) Allgemeine Java-Themen 2
J Java .jar Dateien zusammenführen Allgemeine Java-Themen 1
L Best Practice Log Dateien analysieren und eventuell passende Daten am Chart darstellen Allgemeine Java-Themen 1
F Platzsparende Alternative zu .txt-Dateien Allgemeine Java-Themen 12
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
Ananaskirsche Input/Output Dateien im Ordner Allgemeine Java-Themen 8
A Input/Output Liste der Dateien in einem Ordner in einer Jar Datei erhalten Allgemeine Java-Themen 11
X Herunterladen von Dateien aus dem Internet Allgemeine Java-Themen 2
V Input/Output Sound Dateien aus Jar laden Allgemeine Java-Themen 18
M Dateien aus einem Verzeichnis auf einem Server auflisten Allgemeine Java-Themen 5
H PDFBox akzeptiert Dateien nicht Allgemeine Java-Themen 1
B Java - einlesen von Dateien und herausschneiden von XML Dokumenten Allgemeine Java-Themen 5
A Input/Output Spätes Schreiben von Dateien der JVM Allgemeine Java-Themen 3
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
Thallius Dateien Zippen und wieder heraus lesen? Allgemeine Java-Themen 4
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
Maxim6394 Jar Dateien starten nicht Allgemeine Java-Themen 7
U Eclipse Java Programm beschädigt .tar.gz dateien beim Entpacken Allgemeine Java-Themen 7
GUI-Programmer Mp3 Dateien bearbeiten und speichern Allgemeine Java-Themen 3
S Exklusive Sperre auf Dateien: FileChannel, FileLock Allgemeine Java-Themen 0
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
R Importieren von Txt-Dateien in AbstractTableModel Allgemeine Java-Themen 0
C Dateien komprimieren und verschlüsseln Allgemeine Java-Themen 3
F Eclipse Eclipse kompiliert nicht mehr die aktuellen Dateien Allgemeine Java-Themen 2
R Java Dateien "verschlüsseln" Allgemeine Java-Themen 2
L Passwortgeschützte Dateien Allgemeine Java-Themen 6
A Datentypen Dateien umbenennen mit Dateiendungen - Dateiendungen ausgeben Allgemeine Java-Themen 2
L Reparieren beschädigter PDF Dateien Allgemeine Java-Themen 3
F Dateien ins Array lagern und Optionen zur Auswahl, Allgemeine Java-Themen 5
J XML Dateien vergleichen Allgemeine Java-Themen 9
B Umbenennen von Dateien Allgemeine Java-Themen 2
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
W Best Practice Dateien parsen Allgemeine Java-Themen 3
B Dateien verschwinden aus bin Ordner?! Allgemeine Java-Themen 5
B Dateien prüfen auf Gleichheit Allgemeine Java-Themen 5
M Java Dateien verschieben Allgemeine Java-Themen 2
R Wav-Dateien wiederholt abspielen Allgemeine Java-Themen 2
L Methoden Verarbeitung von Größen Dateien Allgemeine Java-Themen 9
B Alt-Griechisch Zeichen in Dateien Allgemeine Java-Themen 2
M JAR Dateien nur mit Compiler Level 1.6 ausführbar Allgemeine Java-Themen 8
E Zugriff auf Dateien im Filesystem überwachen Allgemeine Java-Themen 5
G .jar Dateien lassen sich nicht mehr öffnen Allgemeine Java-Themen 2
M Datentypen Jar-Dateien öffnen nicht mit Java Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben