MINT lernen

Übungen: Ein Verfahren implementieren

PIXEL, SONNE und ein Minuszeichen, das nicht verschwinden will: Verschlüsseln heißt in Java rechnen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Zehn Übungen zum Klicken, Rechnen und Knobeln — von AFB I bis AFB III. Jede Übung gibt dir sofort Rückmeldung; wenn du hängst, helfen dir die gestuften Tipps.

A1
Zeichen sind Zahlen
AFB I

Geben Sie alle Aussagen über Zeichen in Java an, die zutreffen.

Mehrere Antworten sind richtig. Markiere alle zutreffenden und klicke dann auf „Auswahl prüfen“.
Großbuchstaben liegen lückenlos von 65 bis 90, Kleinbuchstaben erst ab 97 — deshalb sind 'a' und 'A' verschieden. charAt zählt ab 0, liefert also das K. Und 'B' + 1 ist die Zahl 67; zum Zeichen wird sie erst durch (char).
Ansatz: Denk an die Tabelle aus Kapitel 1: A = 65, B = 66, …
Weiter: Rechnet Java mit einem char und einer Zahl, entsteht eine Zahl.
A2
Stimmt's? — Caesar mit k = 4
AFB I

Wenden Sie das Caesar-Verfahren mit dem Schlüssel k = 4 gedanklich an und entscheiden Sie, welche Aussagen stimmen.

5 Aussagen nacheinander. Eine falsche Einschätzung reicht — dann startest du die Serie mit „Neue Runde“ neu.
Aussage 1 von 5

Wer rechnet statt zählt, macht weniger Fehler: Buchstabennummer + k, dann Rest bei Division durch 26. Beim Entschlüsseln erst + 26, damit der Rest nicht negativ wird.
Ansatz: Nummeriere A = 0 bis Z = 25.
Weiter: Über 25 hinaus: 26 abziehen. Unter 0: 26 addieren.
A3
Ausdrücke auswerten
AFB I

Ordnen Sie jedem Java-Ausdruck seinen Wert zu.

Ansatz: K ist der elfte Buchstabe — seine Nummer ab 0 ist?
Weiter: Bei % mit negativer Zahl bleibt das Minuszeichen erhalten.
A4
Tracetabelle: PIXEL
AFB II

Das Wort PIXEL wird mit k = 10 verschlüsselt. Stellen Sie die Rechnung für jeden Buchstaben in der Tabelle dar. Buchstaben groß eintragen.

Fülle alle Felder aus und prüfe dann. Enter in einem Feld prüft ebenfalls.
Zeichenc − 'A'+ k% 26Ergebnis
P
I818
X
E414
L2121
PIXEL wird zu ZSHOV. Nur beim X greift der Rest: 33 % 26 = 7. P mit 25 landet genau auf Z — noch kein Umlauf.
Ansatz: Spalte für Spalte: erst die Nummer, dann + 10.
Weiter: Nur Werte ab 26 werden durch % 26 kleiner.
A5
Vigenère in Java
AFB II

Beim Vigenère-Verfahren wiederholt sich das Schlüsselwort über den Klartext. Implementieren Sie die Methode für Klartexte aus Großbuchstaben, indem Sie die Lücken füllen — vier Bausteine bleiben übrig.

Wort anklicken, dann Lücke anklicken (oder umgekehrt) — mit Tab und Enter geht es genauso. Ein Klick auf eine gefüllte Lücke legt das Wort zurück.

static String vigenere(String klar, String schluessel) {
    String geheim = "";
    for (int i = 0; i < klar.length(); i++) {
        int k = schluessel.charAt(i schluessel.) - ;
        geheim = geheim + ((klar.charAt(i) - 'A' + k) % + 'A');
    }
    return geheim;
}

i % schluessel.length() läuft 0, 1, …, m − 1, 0, 1, … — so wiederholt sich das Schlüsselwort. - 'A' macht aus dem Schlüsselbuchstaben eine Verschiebung von 0 bis 25. Mit / statt % bekäme man die Nummer der Wiederholung, nicht die Position im Schlüssel.
Ansatz: Welcher Operator lässt eine Position immer wieder bei 0 beginnen?
Weiter: Der Schlüsselbuchstabe wird genau wie ein Klartextbuchstabe in eine Zahl 0–25 umgerechnet.
A6
SONNE mit dem Schlüssel KI
AFB II Mix

Berechnen Sie Schritt für Schritt den Geheimtext von SONNE mit dem Vigenère-Schlüsselwort KI — mit der Methode aus A5 und dem Verfahren aus 7.1.2.

Arbeite die Kette Schritt für Schritt ab: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
  1. Verschiebung k an Position i = 2
  2. Geheimtextbuchstabe an Position 0
  3. Geheimtextbuchstabe an Position 3
  4. ganzer Geheimtext
Position 2: 2 % 2 = 0, Schlüsselbuchstabe K → 10. S (18) + 10 = 28 → 2 → C; O (14) + I (8) = 22 → W; N + K = 23 → X; N + I = 21 → V; E (4) + K = 14 → O. Ergebnis CWXVO: Die beiden N werden verschieden verschlüsselt — genau das unterscheidet Vigenère von Caesar.
Ansatz: Die Schlüsselbuchstaben wiederholen sich: K, I, K, I, K.
Weiter: K = 10, I = 8. Über 25 hinaus 26 abziehen.
A7
Drei Fehler beim Entschlüsseln
AFB II

Die Methode soll einen Caesar-Geheimtext aus Großbuchstaben entschlüsseln. Überprüfen Sie sie: Markieren Sie die drei fehlerhaften Zeilen und schreiben Sie die korrekte Zeile hinein.

Klicke die fehlerhaften Zeilen an — dann klappt ein Feld auf, in das du die richtige Zeile schreibst. Geprüft werden Auswahl und Korrekturen.
Zeile 3: Mit <= greift charAt auf den Index g.length() zu — StringIndexOutOfBoundsException. Zeile 5: Ohne + 26 wird der Rest negativ, aus A wird bei k = 3 das Zeichen '>'. Zeile 8: Zurückgegeben werden muss die ganze Zeichenkette, nicht das letzte Zeichen — return c; würde gar nicht übersetzen, weil der Rückgabetyp String ist.
Ansatz: Prüfe Schleifengrenze, Rechenformel und Rückgabe.
Weiter: Letzter gültiger Index ist length() - 1. Und was ergibt (0 - 3) % 26?
A8
XOR mit einem Schlüsselwort
AFB III

Statt eines einzelnen Zeichens soll ein ganzes Schlüsselwort per XOR wirken — wie beim Vigenère-Verfahren wiederholt. Erweitern Sie die XOR-Methode entsprechend und geben Sie an, wie entschlüsselt wird.

Wähle in jedem Menü den passenden Eintrag und prüfe dann alle auf einmal.
static String xorMitWort(String text, String wort) {
    String erg = "";
    for (int i = 0; i < text.length(); i++) {
        char s = wort.charAt();
        erg = erg +  (text.charAt(i)  s);
    }
    return erg;
}
// Entschlüsseln:  klar = ;
Der Schlüssel läuft wie bei Vigenère mit i % wort.length() im Kreis. ^ ist das bitweise XOR; das Ergebnis ist ein int und muss mit (char) zurückverwandelt werden. Weil \(c \oplus s \oplus s = c\) gilt, entschlüsselt dieselbe Methode mit demselben Schlüsselwort — ein eigenes entschluesseln ist überflüssig. Achtung: Das Ergebnis enthält oft nicht druckbare Zeichen.
Ansatz: Der Index im Schlüsselwort soll wieder bei 0 beginnen, wenn das Wort zu Ende ist.
Weiter: XOR ist sein eigenes Gegenstück: zweimal mit demselben Schlüssel ergibt das Original.
A9
Welche Tests finden den Fehler?
AFB III

Eine fehlerhafte Implementierung entschlüsselt mit (c - 'A' - k) % 26 — ohne + 26. Die Verschlüsselung ist korrekt. Analysieren Sie für jeden Rundreise-Test entschluesseln(verschluesseln(t, k), k).equals(t), ob er den Fehler aufdeckt.

Ziehe jede Karte in den passenden Korb — oder wähle sie mit Enter aus und drücke dann die Ziffer des Korbs (0 legt sie zurück).
1Test besteht — Fehler bleibt unentdeckt
2Test scheitert — Fehler wird entdeckt
Der Fehler zeigt sich nur, wenn beim Verschlüsseln ein Umlauf über Z stattfand: Dann ist die Geheimtextnummer kleiner als k, und beim Entschlüsseln entsteht ein negativer Rest. Bei „ZZ“, „Y“, „OK“ (O + 13 = 27) und „ABC“ (B + 25 = 26) passiert das; bei „HALLO“ mit k = 1 und „XA“ mit k = 2 gerade nicht. Deshalb braucht ein guter Test Buchstaben am Ende des Alphabets und große Schlüssel.
Ansatz: Wann wird c - 'A' - k negativ? Nur wenn die verschlüsselte Nummer kleiner als k ist.
Weiter: Das passiert genau dann, wenn beim Verschlüsseln über Z hinaus gezählt wurde.
A10
Trickaufgabe: Doppelt hält besser?
AFB III Trick

Ein Schüler verschlüsselt seinen Text „zur Sicherheit“ zweimal: erst mit k = 20, dann das Ergebnis mit k = 10. Ermitteln Sie den einzelnen Schlüssel zwischen 0 und 25, der genau dasselbe Ergebnis liefert.

Überlege selbst und trage das Ergebnis ein — Enter prüft direkt.
Zwei Verschiebungen hintereinander sind eine Verschiebung um 20 + 10 = 30, und 30 % 26 = 4. Die doppelte Verschlüsselung ist also ein ganz gewöhnlicher Caesar mit k = 4 — kein bisschen sicherer: Brute Force braucht weiterhin höchstens 26 Versuche. Wer 30 antwortet, hat den Umlauf vergessen.
Ansatz: Wie weit ist jeder Buchstabe nach beiden Schritten insgesamt verschoben?
Weiter: Ein Schlüssel ≥ 26 wirkt wie sein Rest bei Division durch 26.