"Verschlüsselung" mit Passwort (XOR bzw. Modulo)

Bizarrus

Bekanntes Mitglied
Hallöchen.
ich möchte gerne eine kleine Verschlüsselung visualisieren.
Sieht auch schon recht gut aus, funktioniert leider aber noch nicht ganz so, wie ich will.

Ich möchte, dass diese Methode um einen String mit einem Passwort zu "verschlüsseln" bzw. "entschlüsseln" zuverlässig funktioniert, was allerdings nicht der Fall ist.

Java:
	private static int CryptKey(int count, String hash) {
		int size = hash.length();
		count = count % size;
		char[] sKeys = hash.toCharArray();
		return sKeys[count];
	}

	
	public static String CryptE(boolean method, String string, String hash) {
		String returned = "";
		int char_new = 0, count = 0;
		
		for(int i = 0; i < string.length(); i++) {
			if(method) {
				char_new = string.charAt(i) + CryptKey(count, hash);
			} else {
				char_new = string.charAt(i) - CryptKey(count, hash);
			}
			
			char_new = char_new % 256;
			if(char_new < 0) { char_new += 256; }
			
			returned += new Character((char) char_new);
			count += 1;
		}
		
		return returned;
	}

Wie wird die Methode genuzt?
Eigendlich Relativ einfach. Man hat ein String, der "verschlüsselt" werden soll, gibt an, ob Ver- oder Entschlüsselt werden soll (true bzw false) und gibt noch ein Passwort an:

Java:
System.out.println("\"Hello World\" verschlüsselt: " + CryptE(true, "Hello World", "mein Passwort"));

Wozu benutze ich diese Methode?
Ich bin derzeit dabei ein Chat zu entwickeln und möchte nicht, dass die "Kommunikation" zwischen Client & Server in Klartext geschieht.
Bei einem handshake des Clienten mit dem Server generiert der Chatserver ein Passwort.
Dieses Passwort ist solange gültig, bis der Client sich vom Server aus irgendwelchen Gründen verabschiedet (Beispielsweise timeout oder beenden des Clienten). Das Passwort wird verwendet um die Kommunikation zwischen Client & Server ein wenig zu sichern (Siehe obige Methoden).

Leider gibt es nun folgendes Problem: Nicht alle Zeichen werden wieder richtig "umgewandelt". Es werden ja schließlich mit der obigen Methode nur die Zeichen "versezt" sodass diese unleserlich erscheinen.

Hier gebe ich mal kurz ein Beispiel:
Passwort: v2fnauQc4y

Versendet: Hello
Verschlüsselt: ¾—ÒÚÐ
Empfangen & Entschlüsselt: Hllo

Versendet: juhuuu
Verschlüsselt: à§ÎãÖê
Empfangen & Entschlüsselt: juhuuu

Versendet: Hello World!
Verschlüsselt: ¾—ÒÚЕ¨Ò¦åÚS
Empfangen & Entschlüsselt: HlloÊWorld!

Versendet: e
Verschlüsselt: Û
Empfangen & Entschlüsselt: e

Wie kann ich die obigen Methoden so optimieren, dass auch tatsächlich immer das selbe ergebnis rauskommt? Ich möchte halt, wenn ich "Hello World" versende und dies mit einem Passwort verschlüsselt wird auch bei der entschlüsselung wieder "Hello World" herauskommt.

Hat jemand einen Tipp/Ideen und kann mir ggf. bei den Problem behilflich sein?
 
G

Gast2

Gast
Erm, deine Bemühungen in Ehre - aber warum nicht einfach die Verbindung über SSL absichern?
 

Bizarrus

Bekanntes Mitglied
Klar, dann muss ich die Jar-file signieren, benoetige dann dafuer ein zertifikat was wiederrum Geld kostet da ansonsten beim laden immer eine vertrauens-dingsbums-meldung erscheint.

Ich moechte die verbindung selbst nicht verschluesseln, sondern den text, der versendet wird.
 
G

Gast2

Gast
Ich moechte die verbindung selbst nicht verschluesseln, sondern den text, der versendet wird.

Versteh ich schon. Das ist aber normalerweise konzeptionell der falsche Ansatz. Hast du dir mal gängige Verschlüsselungsalgorithmen angesehn?

Und nebenbei würd ich wenn schon dann den übertragenen Text in base64 encodieren. Macht es meiner Meinung nach leichter zu debuggen.
 

Bizarrus

Bekanntes Mitglied
ja, hatte mir schon so einiges angeschaut gehabt (cypher & co). Probleme hierbei hatte ich bei grossen texten (man sollte bedenken, es ist ein chat - es kommt also vor, dass man auch mal Romane schreibt).

Gut base64 waere zwar eine moeglichkeit, spricht mich aber nicht so direkt an, zumal man des auf einfacher art en- und decoden kann (ohne irgendwelche "passwortangaben").
 
G

Gast2

Gast
Gut base64 waere zwar eine moeglichkeit, spricht mich aber nicht so direkt an, zumal man des auf einfacher art en- und decoden kann (ohne irgendwelche "passwortangaben").

Ich würde den verschlüsselten Text in base64 encodieren. Dann bekommst du keine unleserlichen Zeichen übermittelt und es macht das debuggen einfacher.

Hier mal ein link der dir helfen könnte die Verschlüsselung richtig zu machen: https://wiki.imise.uni-leipzig.de/Themen/JavaSecurity

Bleibt halt immer noch die Frage wie du initial das Passwort übermittelst. Das ist der schwächste Punkt deiner Kette.
 

musiKk

Top Contributor
Für einen Chat zwischen zwei Parteien eignet sich auch ein Stream-Cipher wie RC4. Den initialen Austausch der Codewörter kann man über Diffie-Hellman erledigen. Das Setup ist ähnlich der BitTorrent Protocol Encryption. Da ist man zwar nicht vor MITM gefeit, aber das geht ohnehin schlecht ohne "ein zertifikat was wiederrum Geld kostet".

Hier mal ein link der dir helfen könnte die Verschlüsselung richtig zu machen: https://wiki.imise.uni-leipzig.de/Themen/JavaSecurity

Richtiger wäre natürlich, nicht ECB zu nutzen.
 
D

despikyxd

Gast
da ansonsten beim laden immer eine vertrauens-dingsbums-meldung erscheint

ich muss dich leider enttäuschen : auch wenn du ein gültiges zertifikat hast *was also von einer bekannten CA wie THWATE oder VeriSign signiert wurde kommt diese meldung um dem user mitzuteilen das das applet OHNE die sandbox ausgeführt wird ...
der einzige unterschied ist nur das bei einem gültigen zertifikat unten drunter steht das es halt gültig is und bei einem ungültigen ein text angezeigt wird das hier i-was nicht stimmt ... ansonsten aber wird das fenster IMMER angezeigt um halt besagte meldung zu machen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Passwort Verschlüsselung hash Allgemeine Java-Themen 2
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
X Verschlüsselung Allgemeine Java-Themen 18
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
R Verschlüsselung falsch Allgemeine Java-Themen 3
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
D AES Verschlüsselung / Wirklich AES 128-Bit? Allgemeine Java-Themen 4
I Best Practice Verschlüsselung mit SALT Allgemeine Java-Themen 4
A Mehrfache XOR Verschlüsselung Allgemeine Java-Themen 11
Thallius Moderne sichere synchrone Verschlüsselung mit Java? Allgemeine Java-Themen 3
Ananaskirsche Verschlüsselung mit AES Allgemeine Java-Themen 4
E Verschlüsselung Allgemeine Java-Themen 4
F Schlüsselworte RSA Verschlüsselung implementieren Allgemeine Java-Themen 5
S Key (für AES-Verschlüsselung) aus String Allgemeine Java-Themen 4
M Serialisierung & Verschlüsselung Allgemeine Java-Themen 2
K Problem mit Salted - Verschlüsselung Allgemeine Java-Themen 4
Z Java E-Mail Client mit End-to-End-Verschlüsselung Allgemeine Java-Themen 4
J Verschlüsselung von Text? Allgemeine Java-Themen 2
K Vigenere- Verschlüsselung Allgemeine Java-Themen 13
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
T AES-Verschlüsselung mit eigenem 256 Bit Schlüssel Allgemeine Java-Themen 12
G AES Verschlüsselung nur bis 63 Zeichen Länge Allgemeine Java-Themen 2
M Verschlüsselung mit Cipher Allgemeine Java-Themen 5
B XOR Verschlüsselung Allgemeine Java-Themen 7
S Framework für symetrische und asymetrische Verschlüsselung Allgemeine Java-Themen 3
lumo Verschlüsselung Allgemeine Java-Themen 2
H Verschlüsselung mit Blowfish Allgemeine Java-Themen 14
C Interpreter-Fehler AES verschlüsselung mit MD5 key Allgemeine Java-Themen 6
S AES Verschlüsselung - File Headers korrupt Allgemeine Java-Themen 10
A Datei, UTF-8, NTRU-Verschlüsselung Allgemeine Java-Themen 3
B String Verschlüsselung Allgemeine Java-Themen 6
M Verschlüsselung anwenden Allgemeine Java-Themen 6
J Verschlüsselung Allgemeine Java-Themen 22
T MD5 Verschlüsselung Nullen fehlen? Allgemeine Java-Themen 2
L [Exception] RSA Verschlüsselung. Allgemeine Java-Themen 16
C javamail signatur und verschlüsselung Allgemeine Java-Themen 2
R 128 Bit Verschlüsselung/Entschlüsselung in Java? Allgemeine Java-Themen 6
F RSA-Verschlüsselung Allgemeine Java-Themen 4
S Verschlüsselung in Java Allgemeine Java-Themen 2
G Interessant! Verschlüsselung in Java, Charset in der JVM? Allgemeine Java-Themen 14
D Eigener Key bei AES Verschlüsselung Allgemeine Java-Themen 4
T Verschlüsselung von Dateien Allgemeine Java-Themen 8
S Verschlüsselung - IllegalBlockSizeException Allgemeine Java-Themen 3
G Problem mit RSA Verschlüsselung bei .net und Java Allgemeine Java-Themen 1
D Caesar und Vigenère Verschlüsselung Allgemeine Java-Themen 2
alexpetri Verschlüsselung Allgemeine Java-Themen 13
@ [Sicherheit] Speicherung von Keys für Verschlüsselung Allgemeine Java-Themen 4
P Verschlüsselung in PHP -> Entschlüsselung in Java Allgemeine Java-Themen 2
Lazybone Caeser Verschlüsselung Allgemeine Java-Themen 6
S Verschlüsselung mit Cipher Allgemeine Java-Themen 8
S Verschlüsselung Allgemeine Java-Themen 15
J Problem mit Dateien/XOR-Verschlüsselung Allgemeine Java-Themen 5
G RSA-Verschlüsselung Allgemeine Java-Themen 1
P HMACMD5- Verschlüsselung entschlüsseln Allgemeine Java-Themen 2
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J Probleme bei XOR verschlüsselung ! Allgemeine Java-Themen 5
G Verschlüsselung in Java Allgemeine Java-Themen 9
M RSA Verschlüsselung Allgemeine Java-Themen 7
J Verschlüsselung von Daten Allgemeine Java-Themen 21
Z Passwort Versuche speichern Allgemeine Java-Themen 8
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
J Passwort Manager Allgemeine Java-Themen 15
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
F Best Practice Passwort Recovery - Schulbeispiel Allgemeine Java-Themen 4
D Passwort verschlüsseln - Wo Allgemeine Java-Themen 2
O verschlüsseltes Passwort ablegen Allgemeine Java-Themen 12
G Unix Passwort mit Java ändern? Allgemeine Java-Themen 3
OnDemand Passwort entschlüsseln Allgemeine Java-Themen 8
S Random Passwort für den User + Hashen Allgemeine Java-Themen 6
W Passwort Clientseitig sicher ablegen ohne Hash Allgemeine Java-Themen 2
DStrohma Passwort in Datei speichern - wie? Allgemeine Java-Themen 31
R Windows - User Passwort ändern Allgemeine Java-Themen 2
S Erstellung einer verschlüsselten Passwort Datei Allgemeine Java-Themen 11
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
J TrueZip - Passwort bei Zipfile Allgemeine Java-Themen 13
I Passwort verschlüsseln Allgemeine Java-Themen 22
padde479 zip mit Passwort Allgemeine Java-Themen 2
H root-Passwort übergeben Allgemeine Java-Themen 28
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
G Blind-Datei (Passwort auslesen) Allgemeine Java-Themen 5
C Passwort sicher speichern Allgemeine Java-Themen 5
P Passwort lokal speichern Allgemeine Java-Themen 5
F Passwort hash Allgemeine Java-Themen 8
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
S .rar-Dateien ein Passwort als Parameter übergeben Allgemeine Java-Themen 5
J Passwort(String) ---> SecretKey(Spec) Allgemeine Java-Themen 6
T jxl Passwort Allgemeine Java-Themen 3
P URL mit htaccess in Explorer öffnen (ohne user-passwort) Allgemeine Java-Themen 6
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
E TextField/Passwort Allgemeine Java-Themen 5
F Java Passwort abfrage Allgemeine Java-Themen 2
D sicheres hardgecodetes passwort? Allgemeine Java-Themen 18
G Zip Datei - Passwort schützen Allgemeine Java-Themen 13
G Modulo - double Allgemeine Java-Themen 21
P Best Practice Wieso funktioniert der Modulo - Operator nicht? Allgemeine Java-Themen 2
T Modulo-Operator versagt bei zu großen Zahlen? Allgemeine Java-Themen 14
A Was berechnet Modulo denn da? Allgemeine Java-Themen 5
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
R Modulo mit negativen Zahlen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben