studyklar
GdI 1 · Übungsblatt 9 · Aufgabe 3

ROT13: Text ver- und entschlüsseln mit charAt und indexOf

ROT13 ist eine einfache Verschlüsselung: Jeder Buchstabe wird um 13 Stellen im Alphabet weitergeschoben. Weil das Alphabet 26 Buchstaben hat, entschlüsselt dieselbe Rechnung den Text wieder. Erst wird das Verfahren von Hand geklärt, dann entsteht die Methode rot13. Rechts steht das Alphabet in zwei Reihen. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 9.3

Schreiben Sie ein Java-Programm A9_3, mit dem auf einfache Weise Nachrichten verschlüsselt und entschlüsselt werden können. Verwenden Sie dazu den folgenden ROT13-Algorithmus (Rotation 13): Bei der ROT13-Codierung werden die einzelnen Buchstaben im Alphabet um 13 Stellen zyklisch verschoben. Zur Decodierung passiert das gleiche, da das Alphabet 26 Buchstaben enthält.

Reduzieren Sie im Java-Programm das Alphabet auf 26 (lateinische) Buchstaben a bis z und lassen Sie dazu alle Umlaute und Sonderzeichen der deutschen Sprache weg. Betrachten Sie auch lediglich Kleinbuchstaben. Das Programm soll jeweils einen zusammenhängenden Klartext von der Tastatur einlesen, verarbeiten und auf dem Bildschirm ausgeben. Den ROT13-Algorithmus implementieren Sie in einer Methode rot13, welcher der Klartext als Parameter übergeben wird und die den Schlüsseltext als Ergebnis zurückliefert. Testen Sie, ob Ihr Algorithmus auch korrekt decodiert, indem Sie den Schlüsseltext wieder als neuen Text eingeben und den neuen Schlüsseltext mit dem ursprünglichen Klartext vergleichen.

Hinweise:

  • Es ist hilfreich, das Alphabet als String mit dem Inhalt „abcdef…yz“ zu deklarieren.
  • Sie können auf die String-Funktionen charAt() und indexOf() zurückgreifen.
  • Zur Eingabe des Klartextes eignet sich die Methode In.readWord(). Die Eingabe erfolgt dann ohne Hochkommas.

Das Programm liest ein Wort ein, den Klartext, und gibt den Schlüsseltext aus: den verschlüsselten Text. Die Umrechnung steckt in einer Methode rot13: Sie bekommt den Text als Parameter und gibt den neuen Text zurück. Zum Test gibt man den Schlüsseltext noch einmal ein; heraus muss der Klartext kommen.

Verschlüsselt werden nur die 26 Kleinbuchstaben a bis z. Was mit anderen Zeichen passiert, sagt die Aufgabe nicht. Wir lassen sie unverändert: Ziffern, Satzzeichen und auch Großbuchstaben bleiben stehen. Großbuchstaben mitzuverschlüsseln zeigt eine Ergänzung am Ende.

Merke: Eine Verschiebung um 13 und noch eine um 13 ergibt 26, also einmal ganz herum. Darum ist ROT13 sein eigenes Gegenstück.
  1. Das Verfahren an einzelnen Buchstaben klären, auch am Ende des Alphabets.
  2. Zeigen, warum zweimal ROT13 den Klartext ergibt.
  3. Die Methode rot13 schreiben: Kopf, Schleife, Position, neuer Buchstabe.
  4. Andere Zeichen behandeln, dann das Hauptprogramm und der Test.

Jeder Buchstabe rückt 13 Stellen weiter

a hat Position 0
0+13=13  ⇒  a→n0 + 13 = 13 \;\Rightarrow\; \text{a} \to \text{n}

Wir nummerieren die Buchstaben ab 0: a hat Position 0, b Position 1, z Position 25. ROT13 ersetzt einen Buchstaben durch den, der 13 Positionen weiter steht. Aus a (Position 0) wird der Buchstabe auf Position 13, das ist n.

Rechts steht das Alphabet in zwei Reihen zu je 13. Darum liegt der Partner jedes Buchstabens der oberen Reihe genau darunter.

Am Ende geht es vorn weiter

neue Position = (alte Position + 13) % 26
(14+13)  %  26=27  %  26=1  ⇒  o→b(14 + 13) \;\%\; 26 = 27 \;\%\; 26 = 1 \;\Rightarrow\; \text{o} \to \text{b}

„Zyklisch verschoben“ heißt: Wer über z hinausläuft, fängt wieder bei a an. o hat Position 14. 14 + 13 = 27, eine Position 27 gibt es nicht. Zieht man 26 ab, ist man einmal ganz herum: 27 − 26 = 1, das ist b.

Dafür gibt es den Rest-Operator %: 27 % 26 ist der Rest von 27 geteilt durch 26, also 1. Bei Positionen unter 26 ändert er nichts: 13 % 26 bleibt 13. So deckt eine Formel beide Fälle ab.

Noch 9 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

0
a
1
b
2
c
3
d
4
e
5
f
6
g
7
h
8
i
9
j
10
k
11
l
12
m
13
n
14
o
15
p
16
q
17
r
18
s
19
t
20
u
21
v
22
w
23
x
24
y
25
z
LegendeBuchstaben des SchrittsDas Alphabet in zwei Reihen: a bis m oben (Position 0 bis 12), n bis z unten (13 bis 25).