Hallo leute ich habe ein problem mit meinem quellcode

ich möchte ein Programm schreiben mit dem man Wörter Verschlüsseln kann bei mir kommt aber Letztendlich nur immer das gleich raus obwohl ich unterschiedliche wörter eingebe
Ich bin noch ein anfänger.

Ich hoffe jemand kann mir sage was ich falschgemacht habe.

Vielen dank im vorraus.

import javax.swing.JOptionPane;

public class crypter {

/**
* @param args
*/
public static void main(String[] args) {
int exit=0;
int c1=0,c2=0;
String cryptKey = JOptionPane.showInputDialog(„UnCriptet“);
int countKey = cryptKey.length();
//System.out.println(countKey);//
char a[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34};
char b[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35};
char c[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35};
///////////////////////////////
while (exit<=countKey-1){
a[c1]=cryptKey.charAt(c1);
//System.out.println(a[c1]);//
exit++;
c1++;
}exit=0;c1=0;
////////////////////////////////
String abc = „ghilmjkcdstuv4567noabe8wxfpqryz12390“;
while(exit<=35){
b[c1]=abc.charAt(c1);
//System.out.println(b[c1]);//
exit++;
c1++;
}exit=0;c1=0;
////////////////////////////
while(exit<=countKey-1){
if(a[c1]==b[c2]){
c[c1]=b[c1];
exit++;
System.out.println(c[c1]);
c1++;
c2=0;
}
else if(a[c1]!=b[c2]){
c2++;

}

}c2=0;
/*System.out.println(""+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]
+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]+c[19]
+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30]
+c[31]+c[32]+c[33]+c[34]+c[35]);*/
JOptionPane.showMessageDialog(null, „“+c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]
+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]+c[19]
+c[20]+c[21]+c[22]+c[23]+c[24]+c[25]+c[26]+c[27]+c[28]+c[29]+c[30]
+c[31]+c[32]+c[33]+c[34]+c[35], „Cryptet“, JOptionPane.PLAIN_MESSAGE);

}

}

Ahoi stanly,

Ich hoffe jemand kann mir sage was ich falschgemacht habe.

Da bin ich mir auch nicht ganz sicher, u.a. da der Code teilweise etwas konfus aussieht.
Des Weiteren gibt’s Probleme, wenn der Schlüssel oder der Klartext mehr als 34 bzw. 35 Zeichen hat.

ich möchte ein Programm schreiben mit dem man Wörter
Verschlüsseln kann

Wenn’s dir tatsächlich um einfaches verschlüsseln von Worten bzw. Texten geht, könntest du ggf. mal folgendes probieren:

import javax.swing.JOptionPane;

public class crypter{
 public static String hexEncode(char c){
 String hex = Integer.toHexString(c);
 while(hex.length() % 2 != 0)
 hex = hex + "0";
 return hex;
 }
 public static char hexDecode(String s){
 return (char)Integer.parseInt(s, 16);
 }
 public static String Encrypt(String Message, String Key){
 String Cipher = "";
 int k = 0;
 for(int n = 0; n = Key.length()-1)
 k = 0;
 Cipher += hexEncode(c)+":";
 }
 return Cipher;
 }
 public static String Decrypt(String Cipher, String Key){
 String Message = "";
 String[] aCipher = Cipher.split(":");
 int k = 0;
 for(int n = 0; n = Key.length()-1)
 k = 0;
 Message += c;
 }
 return Message;
 }
 public static void main(String[] args){
 String Message = JOptionPane.showInputDialog("Message:");
 String Key = JOptionPane.showInputDialog("Password:");
 String Cipher = Encrypt(Message,Key);
 JOptionPane.showMessageDialog(
 null,
 Cipher,
 "Encryptet",
 JOptionPane.PLAIN\_MESSAGE
 );
 String Decrypted = Decrypt(Cipher,Key);
 JOptionPane.showMessageDialog(
 null,
 Decrypted,
 "Decryptet",
 JOptionPane.PLAIN\_MESSAGE
 );
 }
}

P.S.: Dabei handelt es sich um eine Abwandlung der Vigenère-Verschlüsselung (http://de.wikipedia.org/wiki/Polyalphabetische_Subst…)

Und hier noch eine Paraphrasie: Zu Risiken und Nebenwirkungen fragen Sie ihren Programmierer oder Kryptologen. %D

Hallo,

Java bringt bereits Klassen zur Verschlüsselung mit, aber das nur am Rande: https://de.wikipedia.org/wiki/Java_Cryptography_Exte…

ich möchte ein Programm schreiben mit dem man Wörter
Verschlüsseln kann bei mir kommt aber Letztendlich nur immer
das gleich raus obwohl ich unterschiedliche wörter eingebe

Für die Ausgabe wird lediglich das Array „c“ verwendet. Das wird initialiisert mit den Charactern 0-35, die meisten davon sind nicht darstellbar (https://de.wikipedia.org/wiki/American_Standard_Code… Java verwendet Unicode, die ersten Zeichen sind aber identisch mit ASCII).

Erst ab dem Zeichen 33 haben wir es mit einem darstellbaren Zeichen zu tun (!).

In der letzten Schleife prüfst du nun ob etwas im Array „b“ gefunden wird, falls ja wird c[c1] mit b[c1] überschrieben. c1 wird nur bei einem Treffer erhöht. c[n] wird also immer mit b[n] belegt. Das Array b wiederum ist unabhängig von der Benutzereingabe. D.h. abhängig von der Anzahl der eingegebenen Zeichen wird das Array c mit den Zeichen des Strings „ghilmjkcdstuv4567noabe8wxfpqryz12390“ überschrieben.

Gibt der Benutzer z.B. 5 Zeichen ein, so werden die ersten 5 Character des c-Array mit „ghilm“ überschreiben, dann kommen viele nicht darstellbare Zeichen und am Ende noch !"# (die ASCII Zeichen 33-35).

Gibt der Benutzer etwas ein was in diesem String nicht vorkommt (z.B. Umlaute) oder mehr als 35 Zeichen gibt es zudem eine ArrayIndexOutOfBoundException. Es kommt also nicht immer das selbe heraus, aber was herauskommt hängt lediglich von der länge der Benutzereingabe ab.

while(exit

Ich weiß nicht ob ich das jetzt verständlich erklären konnte, aber es ist auch spät :wink:



> Ich bin noch ein anfänger.


Das waren wir alle mal.

HTH
Heavy

danke für die Antwort ich kann sie derzeit nicht Testen da mein eclipse der meinung ist nicht mehr zu funktioniren

ich bin auch Anfänger nur ist mein Hauptproblem nicht das ich Java nicht verstehe sondern das ich meine codes so kompliziert schreibe das diese unlesbar werden und wenn ich dann noch von der schule komme und weitermachen will ist mein hirn überfordert…