Verschlüsselung und Entschlüsselung von Texten

G

guestN

Gast
Hallo Miteinander,

ich benötige dringend Hilfe beim Verschlüsseln und Entschlüsseln von Texten.
Auf JCE Encryption – Data Encryption Standard (DES) Tutorial habe ich ein Beispielprogramm gefunden, das einen Text mittels DES verschlüsselt und entschlüsselt:

Java:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
 
public class JEncrytion
{    
	public static void main(String[] argv) {
 
		try{
 
		    KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
		    SecretKey myDesKey = keygenerator.generateKey();
 
		    Cipher desCipher;
 
		    // Create the cipher 
		    desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
 
		    // Initialize the cipher for encryption
		    desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
 
		    //sensitive information
		    byte[] text = "No body can see me".getBytes();
 
		    System.out.println("Text [Byte Format] : " + text);
		    System.out.println("Text : " + new String(text));
 
		    // Encrypt the text
		    byte[] textEncrypted = desCipher.doFinal(text);
 
		    System.out.println("Text Encryted : " + textEncrypted);
 
		    // Initialize the same cipher for decryption
		    desCipher.init(Cipher.DECRYPT_MODE, myDesKey);
 
		    // Decrypt the text
		    byte[] textDecrypted = desCipher.doFinal(textEncrypted);
 
		    System.out.println("Text Decryted : " + new String(textDecrypted));
 
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
		}catch(NoSuchPaddingException e){
			e.printStackTrace();
		}catch(InvalidKeyException e){
			e.printStackTrace();
		}catch(IllegalBlockSizeException e){
			e.printStackTrace();
		}catch(BadPaddingException e){
			e.printStackTrace();
		} 
	}
}

Als Ausgabe liefert das Programm:

Text [Byte Format] : [B@19b5393
Text : No body can see me
Text Encryted : [B@4e79f1
Text Decryted : No body can see me


Nun zu meinem Problem: Ich möchte aus diesem Programm zwei Programme machen und zwar ein Programm, das nur verschlüsselt und eins das nur entschlüsselt. Das Verschlüsselungsprogramm habe ich glaube ich soweit hinbekommen (s. Code):

Java:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;


public class encrypt {
	
	public static void main(String[] args) {
		 
		try{
 
		    KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
		    SecretKey myDesKey = keygenerator.generateKey();
 
		    Cipher desCipher;
 
		    // Create the cipher 
		    desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
 
		    // Initialize the cipher for encryption
		    desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
 
		    //sensitive information
		    byte[] text = "No body can see me".getBytes();
		       
		    System.out.println("Text [Byte Format] : " + text);
		    System.out.println("Text : " + new String(text));
		    
		 // Encrypt the text
		    byte[] textEncrypted = desCipher.doFinal(text);
		    System.out.println("Text Encrypted : " + textEncrypted);
 
 
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
		}catch(NoSuchPaddingException e){
			e.printStackTrace();
		}catch(InvalidKeyException e){
			e.printStackTrace();
		}catch(IllegalBlockSizeException e){
			e.printStackTrace();
		}catch(BadPaddingException e){
			e.printStackTrace();
		} 
	}
}

Ausgabe:
Text [Byte Format] : [B@1a0c10f
Text : No body can see me
Text Encrypted : [B@aa9835


Das Entschlüsselungs-Programm kriege ich irgendwie nicht hin. Bitte helft mir, habe null Ahnung von Programmieren.

Danke im Voraus
lg
natalie
 

kay73

Bekanntes Mitglied
Was willst Du denn genau machen?
Ist es notwendig, das zu programmieren? Vielleicht gibt es eine Standardanwendung, die Dein Problem lösen kann.
 
G

guestN

Gast
Ich möchte Daten pseudonymisieren, die bei Bedarf wieder in Ursprungsform verwandelt werden können.

Ich habe folgendes versucht:
Java:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
 
public class decrypt
{    
	public static void main(String[] argv) {
 
		try{
 
		    Cipher desCipher;
                    
                    //hier gebe ich die Informationen ein, die der Verschlüsselung entstammen
		    myDesKey = "com.sun.crypto.provider.DESKey@fffe78b2";
		    textEncrypted = "[B@10dd1f7";
                    desCipher = "javax.crypto.Cipher@1bf6770";
 
		    // Initialize the same cipher for decryption
		    desCipher.init(Cipher.DECRYPT_MODE, myDesKey);
 
		    // Decrypt the text
		    byte[] textDecrypted = desCipher.doFinal(textEncrypted);
		    
		    System.out.println("Text Decrypted : " + new String(textDecrypted));
 
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
		}catch(NoSuchPaddingException e){
			e.printStackTrace();
		}catch(InvalidKeyException e){
			e.printStackTrace();
		}catch(IllegalBlockSizeException e){
			e.printStackTrace();
		}catch(BadPaddingException e){
			e.printStackTrace();
		} 
		    
	}
}

Ich versuchte mittels der Informationen, die der Verschlüsselung enstammen, die Entschlüsselung durchzuführen, allerdings läuft es nicht, da ich nicht weiß von welchem Datentypen "myDesKey", "textEncrypted" und "desCipher" und wie ich sie übergeben soll.
Bin ich denn wenigstens ansatzweise auf dem richtigen Weg?
 

Dit_

Bekanntes Mitglied
Java:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
 
public class JEncrytion
{    
    public static void main(String[] argv) {
 
        try{
 
            KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
            SecretKey myDesKey = keygenerator.generateKey();
 
            Cipher desCipher;
 
            // Create the cipher 
            desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
 
            // Initialize the cipher for encryption
            desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
 
            //sensitive information
            byte[] text = "No body can see me".getBytes();
 
            System.out.println("Text [Byte Format] : " + text);
            System.out.println("Text : " + new String(text));
 
            // Encrypt the text
            byte[] textEncrypted = desCipher.doFinal(text);
 
            System.out.println("Text Encryted : " + textEncrypted);
 
            // Initialize the same cipher for decryption
            desCipher.init(Cipher.DECRYPT_MODE, myDesKey);
 
            // Decrypt the text
            byte[] textDecrypted = desCipher.doFinal(textEncrypted);
 
            System.out.println("Text Decryted : " + new String(textDecrypted));
 
        }catch(NoSuchAlgorithmException e){
            e.printStackTrace();
        }catch(NoSuchPaddingException e){
            e.printStackTrace();
        }catch(InvalidKeyException e){
            e.printStackTrace();
        }catch(IllegalBlockSizeException e){
            e.printStackTrace();
        }catch(BadPaddingException e){
            e.printStackTrace();
        } 
    }
}


von Zeile 25 bis 36 ist das Programm zum verschluesseln, Rest ist zum entschluesseln. Du muss also einfach aufteilen. Bis Zeile 25 bleibt alles gleich in beiden Programmen.
 
G

guestN

Gast
So einfach kann ich das ja nicht aufteilen. Wie man bei der Decryption sieht, werden dort Informationen von der Encryption (textEncrypted) benötigt:
Java:
// Initialize the same cipher for decryption
desCipher.init(Cipher.DECRYPT_MODE, myDesKey);

// Decrypt the text
byte[] textDecrypted = desCipher.doFinal(textEncrypted);

d.h. das auch "myDesKey" und "desCipher" benötigt werden.


z.B. verschlüssele ich den Text "Max Mustermann" und erhalte folgende Ausgabe:

desCipher: javax.crypto.Cipher@1201a25
myDesKey: com.sun.crypto.provider.DESKey@fffe7b57
Text Encrypted : [B@10dd1f7

"Max Mustermann" wird nun durch "KundenID: [B@10dd1f7" ersetzt. desCipher und myDesKey soll separat gespeichert werden. Bei Bedarf sollen diese Daten benutzt werden um den verschlüsselten Text wieder zu entschlüsseln, d.h. als Ergebnis "Max Mustermann".
So sieht mein Entschlüsselungs-Programm aus:

Java:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
 
public class decrypt
{    
	public static void main(String[] argv) {
 
		try{
 
		    Cipher desCipher;
		    
		    desCipher = "javax.crypto.Cipher@1201a25"
		    myDesKey = "com.sun.crypto.provider.DESKey@fffe7b57";
		    textEncrypted = "[B@10dd1f7";
 
		    // Initialize the same cipher for decryption
		    desCipher.init(Cipher.DECRYPT_MODE, myDesKey);
 
		    // Decrypt the text
		    byte[] textDecrypted = desCipher.doFinal(textEncrypted);
		    
		    System.out.println("Text Decrypted : " + new String(textDecrypted));
 
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
		}catch(NoSuchPaddingException e){
			e.printStackTrace();
		}catch(InvalidKeyException e){
			e.printStackTrace();
		}catch(IllegalBlockSizeException e){
			e.printStackTrace();
		}catch(BadPaddingException e){
			e.printStackTrace();
		}     
	}
}

Nun benötige ich Hilfe, da ich nicht weiß, wie ich diese Informationen beim Entschlüsselungsprogramm richtig übergebe, um wieder "Max Mustermann" zu erhalten.

lg
guestN
 

Volvagia

Top Contributor
Schau dir mal die Methode Object#toString an, dann kannst du dahinter kommen, was du den ganzen Thread über falsch machst. (Sollst ja was lernen. :bae:)
 
D

despikyxd

Gast
hehe ... kann mich meinem vor-poster nur anschließen ...
war im ersten post noch nicht verwundert über das einfach toString()
als ich dann aber die folgende zeile las war klar was du falsch machst

myDesKey = "com.sun.crypto.provider.DESKey@fffe78b2";

ich geb dir mal n kleinen hint : die toString methode macht nichts weiter als Class.getName() + @ + Object.hashCode() zuerzeugen *zumindest in der unüberschriebenen methode in Object*

als weitere anmerkung : DES ist schon jahrelang veraltet ...
du solltest lieber AES verwenden ... und dann auch nicht mit ECB sondern CBC - modus ... pkcs5padding ist in ordnung

falls du dir mal n fertiges system angucken willst : http://www.java-forum.org/allgemeine-java-themen/112839-netzwerk-sicherheit-hybrid-kryptosystem.html

zwar nicht kommentiert und keine doc dabei *und auch noch rechtschreibfehler : müsste receive statt recieve heißen ^^* aber so in etwa sieht sowas aus ...

was dein wunsch nach splitting angeht : du kannst sowohl verschlüsselung als auch entschlüsselung in einer gemeinsamen klasse vereinen ... und dann halt lediglich caller-klassen drum rum bauen die dann halt nur verschlüsselung oder nur entschlüsselung aufrufen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Cäsar Verschlüsselung Java Basics - Anfänger-Themen 8
Camoflasche RSA Verschlüsselung Java Basics - Anfänger-Themen 0
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
M Verschlüsselung mit replace() Java Basics - Anfänger-Themen 35
P Cäsear verschlüsselung irgendwas passt noch nicht Java Basics - Anfänger-Themen 2
A Methoden Cäsar-Verschlüsselung Java Basics - Anfänger-Themen 13
E Einfache Java Verschlüsselung Java Basics - Anfänger-Themen 4
N Erste Schritte JFrame Caesar-Verschlüsselung Java Basics - Anfänger-Themen 23
Y Caesar Verschlüsselung Fehler Java Basics - Anfänger-Themen 4
Ä Cäsar-Verschlüsselung Java Basics - Anfänger-Themen 5
N Caesar Verschlüsselung Java Basics - Anfänger-Themen 2
L Interpreter-Fehler RSA Verschlüsselung Fehler Java Basics - Anfänger-Themen 2
M Erste Schritte Verschlüsselung von text Java Basics - Anfänger-Themen 21
M Erste Schritte Verschlüsselung / Login-Sicherheit Java Basics - Anfänger-Themen 8
D Eine einfache Verschlüsselung schreiben Java Basics - Anfänger-Themen 3
A Vigenere Verschlüsselung Java Basics - Anfänger-Themen 2
B RSA Verschlüsselung für Aktivierunscode Java Basics - Anfänger-Themen 7
T Array Verschlüsselung Java Basics - Anfänger-Themen 5
Z Cäsar-Verschlüsselung Java Basics - Anfänger-Themen 1
V Permutation, Verschlüsselung Java Basics - Anfänger-Themen 19
H Cäsar-Verschlüsselung Java Basics - Anfänger-Themen 1
S Caesar Verschlüsselung Start Hilfe Java Basics - Anfänger-Themen 4
K Symmetrische Verschlüsselung von TextArea Java Basics - Anfänger-Themen 7
U Problem mit Verschlüsselung Java Basics - Anfänger-Themen 2
C Frage zu RSA-Verschlüsselung Java Basics - Anfänger-Themen 3
Y Applet: Verschlüsselung Java Basics - Anfänger-Themen 3
H Caesar-Verschlüsselung - Was stimmt nicht? Java Basics - Anfänger-Themen 6
V Ceasar Verschlüsselung Java Basics - Anfänger-Themen 9
D Verschlüsselung mit Java Java Basics - Anfänger-Themen 8
F Problem: Verschlüsselung von String in Array Fehler Java Basics - Anfänger-Themen 2
C Verschlüsselung Java Basics - Anfänger-Themen 8
R Frage zu Cäsar - Verschlüsselung! Java Basics - Anfänger-Themen 10
I Rc4 Verschlüsselung in BlueJ Java Basics - Anfänger-Themen 18
D Verschlüsselung Java Basics - Anfänger-Themen 4
C Compiler-Fehler Verschlüsselung Java Basics - Anfänger-Themen 2
B byte-weise Verschlüsselung Java Basics - Anfänger-Themen 6
S Caesar-Verschlüsselung Problem/Frage Java Basics - Anfänger-Themen 4
D Java Password verschlüsselung Java Basics - Anfänger-Themen 6
P RSA Verschlüsselung kleines Problem Java Basics - Anfänger-Themen 5
R Verschlüsselung von String Java Basics - Anfänger-Themen 4
J Cäsar Verschlüsselung Java Basics - Anfänger-Themen 12
D Java Verschlüsselung Java Basics - Anfänger-Themen 8
O Verschlüsselung mit Cipher & Key Java Basics - Anfänger-Themen 9
A Vigenere Verschlüsselung Java Basics - Anfänger-Themen 2
K Cäsar-Verschlüsselung Java Basics - Anfänger-Themen 1
S Hill Verschlüsselung Java Basics - Anfänger-Themen 10
A Einfache java Verschlüsselung HILFE Java Basics - Anfänger-Themen 3
W Xor-Verschlüsselung Java Basics - Anfänger-Themen 15
Y verschlüsselung Java Basics - Anfänger-Themen 10
T Frage zur Verschlüsselung (RSA) Java Basics - Anfänger-Themen 6
A Java Verschlüsselung/Cipher Java Basics - Anfänger-Themen 12
S Verschlüsselung Key Splitting Java Basics - Anfänger-Themen 2
B Again, Verschlüsselung Java Basics - Anfänger-Themen 3
M Caeser Verschlüsselung ganz einfach(nicht für mich) Java Basics - Anfänger-Themen 6
L Frage zur Verschlüsselung in java Java Basics - Anfänger-Themen 3
D Verschlüsselung Java Basics - Anfänger-Themen 4
A verschlüsselung Java Basics - Anfänger-Themen 7
G Vergleich bei MD5-Verschlüsselung Java Basics - Anfänger-Themen 3
zilti md5-Verschlüsselung? Java Basics - Anfänger-Themen 7
L Caesar-Verschlüsselung programmieren Java Basics - Anfänger-Themen 12
Lazybone Vigenere Verschlüsselung funktioniert nicht richtig Java Basics - Anfänger-Themen 8
S XOR-Verschlüsselung Java Basics - Anfänger-Themen 5
U "Einfache Verschlüsselung" Java Basics - Anfänger-Themen 17
K Verschlüsselung Java Basics - Anfänger-Themen 8
E Verschlüsselung mithilfe von Array Java Basics - Anfänger-Themen 2
S SHA? Hashcodes, Blowfish Verschlüsselung Java Basics - Anfänger-Themen 7
L Java und PGP Verschlüsselung, wie...??? Java Basics - Anfänger-Themen 2
R Ceasar Entschlüsselung Java Basics - Anfänger-Themen 7
L Variablen Fehler bei der Entschlüsselung. Java Basics - Anfänger-Themen 5
L AES Entschlüsselung Fehler Java Basics - Anfänger-Themen 0
X Compiler-Fehler Entschlüsselung Java Basics - Anfänger-Themen 17
P Caesar Ver- und Entschlüsselung Java Basics - Anfänger-Themen 1
M Input/Output Ein und Ausgabe von Texten Java Basics - Anfänger-Themen 20
C java programm mit Texten, speichern und so Java Basics - Anfänger-Themen 3
N Spracherkennung bei Texten Java Basics - Anfänger-Themen 2
G Hinzufügen und Entfernen von Zahlen, Texten etc. aus JLists Java Basics - Anfänger-Themen 6
S jTextField vergrößert sich bei längeren Texten Java Basics - Anfänger-Themen 4
K Wortpaare in Texten erkennen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben