Die Substitutions-Verschlüsselung knacken.
Bibliothek herunterladen
Um die grafische Oberfläche zum Knacken der Substitutionschiffre verwenden zu können, wird die folgende Datei benötigt. Sie muss im Projektverzeichnis gespeichert werden, damit die Einbindung klappt.
Die Datei liegt absichtlich in einem binären Format vor, so dass der Code nicht gelesen werden kann, da einige Zusatzaufträge zur eigenen Implementation der angebotenen Funktionalität auffordern.
Wichtig
Im Gegensatz zu den anderen Dokumentationsseite (z.B. für die Bibliothek substitution) steht auf dieser Seite nicht, welche Funktionen verfügbar sind, sondern welche Funktionen mit welchen Argumenten und Rückgabewerten ihr selbst schreiben müsst, damit das Bedienen der grafischen Oberfläche klappt. Im Code von substitution_gui ist festgelegt, welche Funktionen beim Starten des Programms und beim Drücken der Knöpfe aufgerufen werden.
Damit der Funktionsaufruf aus der grafischen Oberfläche klappt, muss eure Datei substitution_attack.py heissen.
Bibliothek importieren
Die Bibliothek kann mit dem bekannten import-Befehl importiert werden:
import substitution_guiVariablen
CIPHERTEXTOptionale Variable, in der der zu analysierende Geheimtext als String gespeichert werden kann. Falls die Variable existiert, wird der Inhalt beim Start in der grafischen Oberfläche dargestellt.
KNOWN_PLAINTEXTOptionale Variable, in der das vermutete Klartextwort als String gespeichert werden kann. Falls die Variable existiert, wird der Inhalt beim Start in der grafischen Oberfläche dargestellt.
Funktionen
analyze()
Diese Funktion wird ausgeführt, sobald der entsprechende Knopf der grafischen Oberfläche angeklickt wird. Die Funktion soll den gegebenen Geheimtext und das vermutete Klartextwort untersuchen. Falls das Wort von der Struktur im Geheimtext vorkommen kann, soll der entsprechende Schlüssel gebildet werden.
analyze(ciphertext, known_plaintext)- Parameter
ciphertext
Der zu entschlüsselnde Text als String.known_plaintext
Das vermutete Klartextwort als String.- Rückgabewert
- Die Funktion soll den teilweise berechneten Schlüssel als Liste zurückgeben, z.B.
["N", "T", "*", ..., "E"]. D.h. ein"A"im Geheimtext soll später durch"N"ersetzt werden,"B"durch"T"und so weiter bis zum Buchstaben"Z", der durch"E"ersetzt wird. Für den Buchstaben"C"ist bisher noch kein Schlüsselbuchstabe bekannt, daher wird da ein"*"notiert.
manual_decrypt()
Diese Funktion wird ausgeführt, sobald der entsprechende Knopf der grafischen Oberfläche angeklickt wird. Die Funktion soll den gegebenen Geheimtext mit dem bisher berechneten resp. eingegebenen Schlüssel entschlüsseln.
manual_decrypt(ciphertext, key)- Parameter
ciphertext
Der zu entschlüsselnde Text als String.key
Der zu verwendende Schlüssel als Liste, z.B.["N", "T", "*", ..., "E"]. D.h. ein"A"im Geheimtext soll durch"N"ersetzt werden,"B"durch"T"und so weiter bis zum Buchstaben"Z", der durch"E"ersetzt wird. Für den Buchstaben"C"ist bisher noch kein Schlüsselbuchstabe bekannt, daher wird da ein"*"notiert.- Rückgabewert
- Die Funktion soll den entschlüsselten Text als String zurückgeben. Darin steht überall ein
"*", wo der entsprechende Schlüsselbuchstabe noch nicht bekannt ist.