Rc4 Verschlüsselung in BlueJ

Introser

Mitglied
Hoffe mal, dass ich hier in diesem Forum auch Hilfe zu BlueJ bekomme, wäre nett.

Also zu meiner Frage:
Ich schreibe zurzeit eine Facharbeit und muss dafür 2 Verschlüsselungs Algorithmen, einmal Cäsar, einmal RC4, Cäsar kein Problem, aber bei RC4 hackt es.

Laut Internet muss ich eine S-Box erstellen, kein Problem, dann diese S-Box ins Hexadezimal System umwandeln, hier ist mein Problem...
Habe wohl den Befehl
Java:
Integer.toHexString(x);
, was zum verschlüsselb reicht, aber wie kriege ich diesen String wieder zu einem Int?
Diesen Befehl finde ich leider nicht, weiß den vllt jemand?

Eine weitere Frage, wenn ich einen String mit einen Int(oder String) Xor(^), nimmt dann Java automatisch die Binärnummer des Strings? oder müsste ich das extra schreiben :/


Vielen Dank schonmal

Grüße Introser
 

Introser

Mitglied
Ahh Vielen Dank, jetzt habe ich nur noch das Problem, dass ich einen String mit einem Int XORen muss, also mein zu verschlüsselnder Text(String) mit der S-Box, die als Int bespeichert ist...
Wie geht das?? Gibt es dafür auch einen Befehl?
 

Kevin94

Top Contributor
Deine zweite Frage versteh ich nicht.
Du kannst in Java mit Binärenoperatoren(^ | &) nur primitive Datentypen verknüpfen, also boolean, int, double und so weiter, aber keine Objekte wie Strings. Das geht einfach nicht.

Edit: Hab mir grad die Wikipedia-Seite zum rc4 Algorithmus angeschaut. Kannst du mir mal verraten, wozu du da Strings mit Hex-zahlen brauchst? Das lässt sich doch ganz simpel mit dem Datetyp byte implementieren.
 
Zuletzt bearbeitet:

Introser

Mitglied
Die Erklärung bei Wiki ist so lalala...
Manche wandeln die S-box ins Hexa System um, ist aber nicht bei allen Algorithmen so, besonders bei Wiki steht da meistens mist...




Kannte Byte vorher noch nicht :D aber bei Byte kann ich doch keine Zeichen speichern??
Ich will z.b. den Satz "Hallo ich bin Introser" verschlüsseln, nicht nur Zahlen, das geht mit byte doch nicht, daher wollte ich mein zu verschlüsselnder Text als String speichern, den splitten und dann verschlüsseln, geht aber nicht



edit:
Am anfang bei der ERstellung der S-Box habe ich folgende Zeile:
j= (j+s+key[i %key.length]) % 256;
Mich interresiert hier nur das "key", alle typen sind hier Ints, auch key, also das passwort, aber was ist wenn ich ein wort als passwort haben will, dann kann ich ja nicht ints und Strings addieren... Wie könnte man sowas machen?
 
Zuletzt bearbeitet:

Kevin94

Top Contributor
Keine mir bekannte Verschlüsselung arbeitet mit Text. Jede Verschlüsselung bassiert darauf, dass die Information in Form einer Zahlenkette vorliegen, wobei String allerdings auch nichts anderes ist als eine Zeichenfolge und ein Zeichen durch eine Zahl repräsentiert wird. Du musst also Deinen String in ein Array von Zahlen umwandeln (Mit den genannten Methoden) und dann dieses verschlüsseln und nichts anderes.
 

Introser

Mitglied
Keine mir bekannte Verschlüsselung arbeitet mit Text. Jede Verschlüsselung bassiert darauf, dass die Information in Form einer Zahlenkette vorliegen, wobei String allerdings auch nichts anderes ist als eine Zeichenfolge und ein Zeichen durch eine Zahl repräsentiert wird. Du musst also Deinen String in ein Array von Zahlen umwandeln (Mit den genannten Methoden) und dann dieses verschlüsseln und nichts anderes.


Ja, genau diese Methoden brauchte ich ;) toCharArray kannte ich zwar schon, habe es auch ausprobiert hat da aber immer einen Fehler ausgespuckt beim XORen, lag aber an etwas anderes ;) Vielen Dank!!
 

Introser

Mitglied
Jetzt habe ich nur noch ein Problem, wenn ich die FUnktionen toCharArray benutze, dann einen buchstaben verschlüssele kommt ja eine Zahl dabei raus, dank dem XOR.
Aber ich will aus dieser Zahl wieder einen Buchstaben kriegen :/ wie geht das??
 

Introser

Mitglied
wie meinst du das?? Mein Programm sieht bisher so aus:

Java:
int t=s[((s[i]+s[j])%256)];
            char chiffre=((char) (((char)klar[k]) ^ t));

ich bekomme trdm zahlen heraus, wenn ich 2 buchstaben XORe, will aber wenn ich 2 Buchstaben XORe einen anderen Buchstaben rauskriegen
 

Kevin94

Top Contributor
Ich glaub du hast da ein grundsätzliches Verständnissproblem, für den Computer gibt es keinen Unterschied zwieschen einer Zahl und einem Buchstaben. Der Java-Compiler sagt blos, dass eine Zahl vom typ char als der dieser Zahl zugeordnete Buchstabe in einen String eingefügt, bzw. ausgegeben werden soll und alle anderen Typen in die Dezimaldarstellung umgewadelt werden.
Wenn du ein Array von char's hast, kannst du daraus ganz einfach einen neuen String erzeugen, einer von den unzähligen Konstruktoren von String.
 

Introser

Mitglied
Okay, das funktioniert jetzt, Vielen Dank!! das
Java:
String.valueOf
fehlte mir.



Mein Programm sieht jetzt so aus:
Java:
public void sBoxErstellen(String pw, String klartext){
        key = pw.toCharArray();
        klar= klartext.toCharArray();
        
        aus= new char[klar.length];
        s= new int[256];
        for (int a=0; a < 256;a++){
            s[a]= a;

        }
        j=0;
        i=0;

        for (int i=0; i< 256;i++){
            j= (j+s[i]+key[i %key.length]) % 256;
            speicher=s[i];
            s[i]=s[j];
            s[j]= speicher;
        }
        i=0;j=0;
        sb = new StringBuffer();
        for(int k=0;k<klar.length;k++){      
            i=(i+1)%256;
            j=(s[i]+j)%256;
            speicher=s[i];
            s[i]=s[j];
            s[j]= speicher;
            int t=s[((s[i]+s[j])%256)];
            aus[k]=((char) (((char)klar[k]) ^ t));
            aus2= String.valueOf(aus[k]);
          
			sb.append(aus2);
            
        }
        
    }


Bei manchen einzelnen Buchstaben kommt ein verschlüsselter Buchstabe raus, verschlüssel ich diesen noch einmal, kommt wieder der Anfangsbuchstabe raus, aber bei vielen Buchstaben kommen Zeichenketten wie "&Ö¾cÆF<ô½I°" heraus, warum das?? Sollten nicht nur "normale" buchstaben herauskommen??
 

Kevin94

Top Contributor
Warum wandelst du das Zeichen erst in einen String um, wenn du den dann nur einem StringBuffer hinzufügst, du kannst das Zeichen dem StringBuffer auch dirket hinzufügen.
Das Problem mit den komischen Zeichen liegt darin begrüdet, das char 16-bit ist und somit 65.536 verschiedene Zeichen fast, der Computer aber nur einen Bruchteil davon darstellen kann. Und beim Kodieren können auch diese Zeichen entstehen, die dann entweder als zwei Zeichen dargestellt werden oder auch als Fragezeichen in einer Raute. Wenn du diesen Text kopierst und dann wieder zu entschlüsseln versuchst, kann es sein, dass das ganze nicht mehr funktioniert.
 

Introser

Mitglied
Den kenne ich schon ;)
aber einen String kann ich doch nicht in einen Short array umwandeln= zumindest finde ich keine Funktion die das macht...
 

kay73

Bekanntes Mitglied
Java:
import java.io.ByteArrayOutputStream;

class RC4 {

	final byte S [] = new byte[256];
	
	private RC4(final byte [] key) {
		
		for(int i=0;i < S.length; i++) {
			S[i]=(byte)(i&0xFF);
		}
		
		// key schedule
		int j=0;
		byte tmp;
		for(int i = 0; i < S.length; i++) {
			
			tmp = S[i];			
			j += tmp;
			j += key[i % key.length];
			j &= 0xFF;			
			S[i] = S[j];
			S[j] = tmp;
		}
	}
	
	public static RC4 getInstance(final byte [] key) {
		if(key.length < 5 || key.length > 255) {
			throw new IllegalArgumentException("key length must be between 5 and 255");
		}
		
		return new RC4(key);
	}
	
	public byte [] crypt(final byte [] plain) {
		int i = 0, j = 0; 
		byte tmp;		
		final ByteArrayOutputStream bos = new ByteArrayOutputStream(plain.length);
		for(final byte b : plain) {
			
			tmp = S[i];			
			i++;
			i &= 0xFF;			
			j += tmp;
			j &= 0xFF;		    
		    S[i] = S[j];
		    S[j] = tmp;
		    
		    bos.write(b ^ S[(S[i] + tmp)& 0xFF]);
		}
		
		return bos.toByteArray();
	}
	
	public static void main(String[] args) {
		final byte [] key = "geheim123!".getBytes();
		
		final byte [] plain=("Den kenne ich schon aber einen String "
				+"kann ich doch nicht in einen Short array umwandeln= "
				+"zumindest finde ich keine Funktion die das macht... ").getBytes();
		
		
		final byte cipher [] = RC4.getInstance(key).crypt(plain);
		
		final byte decrypted [] = RC4.getInstance(key).crypt(cipher);
		
		System.out.println(String.format("    plain: %1$s\n   cipher: %2$s\ndecrypted: %3$s", 
			new String(plain), 
			printBytes(cipher), 
			new String(decrypted)));
	}
	
	private static String printBytes(final byte[] bytes) {
		final StringBuilder sb = new StringBuilder();
		for(final byte b : bytes) {
			sb.append(String.format("%02X", b));
		}
		return sb.toString();
	}
}
 
Zuletzt bearbeitet:

Introser

Mitglied
Aha, vielen Dank, nur davon versteh ich so ziemlich kaum was, da ich erst seit nem halbem Jahr Java in der Schule habe und wir da nicht viel lernen...
 
Ä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
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
G Verschlüsselung und Entschlüsselung von Texten Java Basics - Anfänger-Themen 7
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
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
W Pfeilenformen im BlueJ Java Basics - Anfänger-Themen 9
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
aero043 Hilfe bei BlueJ Hausübung Java Basics - Anfänger-Themen 27
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
Vernon.098 Java (BlueJ) Mensch ärgere dich nicht Programmien Java Basics - Anfänger-Themen 6
momo96 bluej Java Basics - Anfänger-Themen 2
K BlueJ Ball an Rand Reflektieren Java Basics - Anfänger-Themen 2
YAZZ BlueJ Bewegung einer Figur im Kreis Java Basics - Anfänger-Themen 4
Delonyg Bluej Supermarkt Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
N BlueJ Implementation Analoguhr Java Basics - Anfänger-Themen 33
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
C Projekt öffnen BlueJ Java Basics - Anfänger-Themen 1
M BlueJ - Array als Paramter einer Methode eingeben Java Basics - Anfänger-Themen 12
K Testen in BlueJ Java Basics - Anfänger-Themen 2
C BlueJ Zahlenschloss programmieren Java Basics - Anfänger-Themen 5
1 BlueJ Fehler ? Java Basics - Anfänger-Themen 7
L Bluej Error: Cannot find Symbol Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
G Variablen Variable nimmt keinen Wert an (BlueJ) Java Basics - Anfänger-Themen 4
I BlueJ importdatei fehlt Java Basics - Anfänger-Themen 4
D Java BlueJ Programm wiederholen? Java Basics - Anfänger-Themen 6
J Uniprojekt (BlueJ) Java Basics - Anfänger-Themen 17
H Klassen Hilfe bei BlueJ, Supermario Java Basics - Anfänger-Themen 5
W Testmethoden in BlueJ Java Basics - Anfänger-Themen 12
F Java BlueJ Dinge verschwinden lassen Java Basics - Anfänger-Themen 2
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben