Hallo,
heute wage ich mal mir bei meiner Hausaufgabe eine kleine Hilfestellung geben zu lassen. Mein Programm ist eigentlich schon fertig und läuft. Bei genauerem Testen ist mir aber noch ein Problem aufgefallen, was mich daran hindert die Aufgabe abzugeben. Bestimmt ist es nur eine Kleinigkeit. (hoffentlich...)
Was das Programm tun soll:
Wahlweise entschlüsseln oder verschlüsseln für beliebige Schlüsselworte und Texte. (Verschlüsselungsverfahren durch Zweifachsubstitution nach Blaise de Vigenére und Tritemius)
Die Aufgabe wurde hier (etwas weiter unten) schonmal in voller länge gepostet.
Mein Problem:
Im ersten Durchlauf tut es was es soll. Im zweiten Durchlauf entschlüsselt das Programm trotz gleicher Angaben anders. Erst dachte ich es liegt daran, dass die Variable "index" nach jeden Durchlauf wieder auf 0 gesetzt werden muss, aber das hat auch nicht geklappt.
Eingabe
LMVSNIYZSJCCUFUPOJHJQZXVGTEEGJLBRPNVYVZGUQRENGKGZESQMGXPAFKQFSMPFSUOWK
Ausgabe 1. Durchlauf (richtig)
DASHABENSIEABERSEHRSCHOENGEMACHTSIESINDJASCHONEINRICHTIGERINFORMATIKER
Ausgabe 2. Durchlauf(falsch)
VSKZSTWFKAWSTWJKWZJKUZGWFYWESUZLKAWKAFVBSKUZGFWAFJAUZLAYWJAFXGJESLACWJ
Zum Code:
Habe nur den betreffenden Code mit seinen zwei Methoden zum Verschlüsseln gepostet und die Eingaben vorbelegt, damit der Freund und Helfer der sich hier hoffentlich finden wird, es übersichtlicher und einfacher hat.
Danke im Voraus für jeden Hinweis!
heute wage ich mal mir bei meiner Hausaufgabe eine kleine Hilfestellung geben zu lassen. Mein Programm ist eigentlich schon fertig und läuft. Bei genauerem Testen ist mir aber noch ein Problem aufgefallen, was mich daran hindert die Aufgabe abzugeben. Bestimmt ist es nur eine Kleinigkeit. (hoffentlich...)
Was das Programm tun soll:
Wahlweise entschlüsseln oder verschlüsseln für beliebige Schlüsselworte und Texte. (Verschlüsselungsverfahren durch Zweifachsubstitution nach Blaise de Vigenére und Tritemius)
Die Aufgabe wurde hier (etwas weiter unten) schonmal in voller länge gepostet.
Mein Problem:
Im ersten Durchlauf tut es was es soll. Im zweiten Durchlauf entschlüsselt das Programm trotz gleicher Angaben anders. Erst dachte ich es liegt daran, dass die Variable "index" nach jeden Durchlauf wieder auf 0 gesetzt werden muss, aber das hat auch nicht geklappt.
Eingabe
LMVSNIYZSJCCUFUPOJHJQZXVGTEEGJLBRPNVYVZGUQRENGKGZESQMGXPAFKQFSMPFSUOWK
Ausgabe 1. Durchlauf (richtig)
DASHABENSIEABERSEHRSCHOENGEMACHTSIESINDJASCHONEINRICHTIGERINFORMATIKER
Ausgabe 2. Durchlauf(falsch)
VSKZSTWFKAWSTWJKWZJKUZGWFYWESUZLKAWKAFVBSKUZGFWAFJAUZLAYWJAFXGJESLACWJ
Zum Code:
Habe nur den betreffenden Code mit seinen zwei Methoden zum Verschlüsseln gepostet und die Eingaben vorbelegt, damit der Freund und Helfer der sich hier hoffentlich finden wird, es übersichtlicher und einfacher hat.
Danke im Voraus für jeden Hinweis!
Java:
import inout.Console;
public class GeheimschriftenTest
{
private static char abc = 65; //Um ASCII-Zeichen beginnend mit "A" zu durchlaufen
private static int index = 0; //Codetext-Index getrennt durchlaufen
private static final char A = 65; //Beginn des Alphabets
private static final char Z = 90; //Ende des Alphabets
//Hauptprogramm*****************************************************************************************
public static void main (String args[]) {
for(;;){ // Auswahldialog mit Abbruchmöglichkeit
System.out.println("\nWählen Sie bitte aus:");
System.out.println("1: Ich will einen Text VERschlüsseln");
System.out.println("2: Ich will einen Text ENTschlüsseln");
char auswahl = Console.readChar();
if(auswahl == '9') {break;}
switch(auswahl){
case '1': textEntschluesseln(); break;
case '2': textEntschluesseln(); break;
default: System.out.println("Keine gültige Eingabe. Wählen Sie Zwischen Möglichkeit 1, 2 oder brechen Sie mit '9' ab");
continue;
}
}
System.out.print("Ende des Programms");
}//Ende Hauptprogramm*****************************************************************************************
public static void textEntschluesseln() {
System.out.println("\nSchlüsselwort:");
char []schluessel = Console.readCharArray();
System.out.println("Text:");
char []codetext = Console.readCharArray();
System.out.println("Entschlüsselter Text:"); //Klartext ausgeben
wandleInKlartext(schluessel, codetext);
System.out.println();
}
public static char[] wandleInKlartext(char []schluessel, char []codetext) {
char klartext[] = new char[codetext.length];
for(int i = 0; i < codetext.length; i++){ //codetext durchlaufen
klartext[index] = (char)(codetext[i] - schluessel[index] + abc);
if(klartext[index] > Z){ //Abfrage auf Überschreitung des Alphabets
klartext[index] = (char)(klartext[index] - 26); //Zurücksetzen um 26 Zeichen bei Überschreitung von "Z"
} else if (klartext[index] < A) {
klartext[index] = (char)(klartext[index] + 26); //Vorsetzen um 26 Zeichen bei Unterschreitung von "A"
}
System.out.print(klartext[index]);
if(abc < 90) abc++; else abc = 65;
if(index != schluessel.length-1)index++; else index = 0; //Schlüsselwort von vorne durchlaufen wenn Ende erreicht
}
return klartext;
}
}
Zuletzt bearbeitet: