Substitutionschiffre

In der Datei code.txt findest du einen deutschsprachigen Text. Er wurde mit einer Substitutionschiffre verschlüsselt (jeder Buchstabe wurde mit einem anderen ersetzt).

Lade die Datei

text = open("code.txt").read()
print(text)

Erstelle eine Ersetzungstabelle

Zum Entschlüsseln benötigst du ein Dictionary, in dem alle Buchstaben des kodierten Texts als Schlüssel und die Buchstaben im Klartext als Werte vorhanden sind.

kodiert  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
klartext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

chiffre = dict(zip(kodiert, klartext))
print(chiffre)

Die Buchstaben im Klartext stimmen natürlich noch nicht, aber wir müssen ja irgendwo anfangen.

Ersetze Buchstaben

Schreibe eine Schleife, die den Text Buchstabe für Buchstabe ersetzt. Ignoriere Sonderzeichen (hier Leerzeichen und Zeilenumbrüche).

klartext = ""
for char in text:
    ...

Statistischer Angriff

Eine Substitutionschiffre ist über die Buchstabenhäufigkeiten angreifbar. Mit folgendem Code kannst du sie ermitteln:

from collections import Counter

c = Counter(text)
print(c)

Vergleiche die Häufigkeiten im Text mit denen eines Referenztextes (z.B. einer Wikipedia-Seite). Die folgende Zeile wirft alles ausser Buchstaben aus einem String heraus, so dass du sie besser zaehlen kannst:

import re
buchstaben = ''.join(re.findall("[A-Z]", text.upper()))

Knacke den Code

Probiere unterschiedliche Buchstaben aus.