Hallo zusammen,
wir haben seit Semptember "Programmieren mit Java" an der Fachhochschule und ich komme auch super gut zurecht. Jetzt haben wir aber wieder eine Aufgabe bekommen, bei der ich nicht wirklich verstehe, wie man sie angehen kann. Ich denke mal, dass ich auch allgemein noch nicht ganz den Ablauf begreife. Die Aufgabenstellung lautet:
Da es keiner verstand, hat er uns die for-Schleife für die Verschlüsselung gegeben. Bis zum vwert verstehe ich den Ansatz, aber mit dem Modulo nicht. Auch wie wir das Gesamte wieder für die Entschlüsselung verwenden können ist mir rätselhaft.
Könnt ihr mir da helfen? Ich danke euch im Voraus
wir haben seit Semptember "Programmieren mit Java" an der Fachhochschule und ich komme auch super gut zurecht. Jetzt haben wir aber wieder eine Aufgabe bekommen, bei der ich nicht wirklich verstehe, wie man sie angehen kann. Ich denke mal, dass ich auch allgemein noch nicht ganz den Ablauf begreife. Die Aufgabenstellung lautet:
Programmieren Sie die Klasse Verschlüsselung nach folgenden Vorgaben:
Die Klasse enthält ein Objektattribut schluessel vom Typ int und zwei Objektmethoden
verschluessele(…) und entschluessele(…), die einen String mit
dem Schlüssel schluessel verschlüsselt bzw. entschlüsselt und den verschlüsselten
bzw. entschlüsselten String zurückgibt. Gehen Sie nach dem folgenden,
sehr einfachen Verschlüsselungsalgorithmus vor
Gehen Sie davon aus, dass die zu verschlüsselnden Worte nur die Kleinbuchstaben
a – z enthalten. Jeder positiven Zahl wird nun ein Buchstaben zugeordnet
durch 0 → a, 1 → b, …, 25 → z, 26 → a, 27 → b, … . Jedem Zeichen
wird umgekehrt ein Zahlenwert zugeordnet: a → 0, b → 1, …, z → 25.
Ein Zeichen in einem Wort w wird wie folgt verschlüsselt: Auf den Zahlenwert
des Zeichens wird der Schlüsselwert schluessel und der verschluesselte Wert
des vorhergehenden Zeichens (anfangs 0) addiert. Der entsprechende Wert
wird dann in das entsprechende Zeichen umgewandelt.
Beispiel: Wir wollen das Wort „da“ verschlüsseln mit dem Schlüssel 12.
Hierzu berechnen wir den Zahlenwert 3 für das erste Zeichen d,
addieren 12 hinzu, und berechnen aus dem resultierenden Wert 15 das
Zeichen p. Nun nehmen wir den Zahlenwert für das zweite Zeichen a,
addieren den Schlüssel 12 hinzu und den Wert 15, den wir bei der Verschlüsselung
von d erhalten haben, und erhalten als Summe 27. Das
entsprechende Zeichen ist dann b.
Insgesamt erhält man also den String „pb“ für das Wort „da“.
Die Klasse enthält ein Objektattribut schluessel vom Typ int und zwei Objektmethoden
verschluessele(…) und entschluessele(…), die einen String mit
dem Schlüssel schluessel verschlüsselt bzw. entschlüsselt und den verschlüsselten
bzw. entschlüsselten String zurückgibt. Gehen Sie nach dem folgenden,
sehr einfachen Verschlüsselungsalgorithmus vor
Gehen Sie davon aus, dass die zu verschlüsselnden Worte nur die Kleinbuchstaben
a – z enthalten. Jeder positiven Zahl wird nun ein Buchstaben zugeordnet
durch 0 → a, 1 → b, …, 25 → z, 26 → a, 27 → b, … . Jedem Zeichen
wird umgekehrt ein Zahlenwert zugeordnet: a → 0, b → 1, …, z → 25.
Ein Zeichen in einem Wort w wird wie folgt verschlüsselt: Auf den Zahlenwert
des Zeichens wird der Schlüsselwert schluessel und der verschluesselte Wert
des vorhergehenden Zeichens (anfangs 0) addiert. Der entsprechende Wert
wird dann in das entsprechende Zeichen umgewandelt.
Beispiel: Wir wollen das Wort „da“ verschlüsseln mit dem Schlüssel 12.
Hierzu berechnen wir den Zahlenwert 3 für das erste Zeichen d,
addieren 12 hinzu, und berechnen aus dem resultierenden Wert 15 das
Zeichen p. Nun nehmen wir den Zahlenwert für das zweite Zeichen a,
addieren den Schlüssel 12 hinzu und den Wert 15, den wir bei der Verschlüsselung
von d erhalten haben, und erhalten als Summe 27. Das
entsprechende Zeichen ist dann b.
Insgesamt erhält man also den String „pb“ für das Wort „da“.
Da es keiner verstand, hat er uns die for-Schleife für die Verschlüsselung gegeben. Bis zum vwert verstehe ich den Ansatz, aber mit dem Modulo nicht. Auch wie wir das Gesamte wieder für die Entschlüsselung verwenden können ist mir rätselhaft.
Java:
public String verschluessele(String eingabe, int schluessel) {
String erg = "";
int awert = 0;
for(int i=1; eingabe.length() > i; i++) {
int wert = eingabe.charAt(i) - 'a';
int vwert = (wert - schluessel - awert) % 26;
erg += (char) (vwert - 'a');
awert = vwert;
}
return erg;
}
Könnt ihr mir da helfen? Ich danke euch im Voraus