i

Funktionen zur Implementierung des Verschiebevefahrens

Codierung von Zeichen

Zeichen werden intern im Rechner durch Bitfolgen codiert. In Abschnitt Exkurs - ASCII-Code findest du die einfache und vielfach genutzte ASCII-Codierung von Zeichen.

Da man die Bitmuster in der ASCII-Codierung auch als Zahlen deuten kann, lässt sich jedem Zeichen (aus einem vorgegebenen Zeichenvorrat) eine natürliche Zahl (aus einem passenden Zahlenbereich) zuordnen und umgekehrt. Dem Zeichen 'A' lässt sich beispielsweise nach dem ASCII-Code die Zahl 65 zuordnen.

Zeichen Zahl
A 65
B 66
C 67
... ...

Auf diese Zuordnung zwischen Zeichen und Zahlen kann man in Pythen wie folgt zugreifen. Probiere das selbst einmal aus.

Beachte, dass Zeichen in Python mit Hochkommata dargestellt werden. Zeichen sind hier Daten vom Datentyp str.

Die vordefinierte Funktion ord ordnet jedem Zeichen (gemäß ASCII-Tabelle) eine natürliche Zahl zu.

<Black-Box-Diagramm><Funktionsname>ord</Funktionsname><Übergaben><Übergabe><Wert>'A'</Wert><Variable></Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>65</Wert></Rückgabe></Black-Box-Diagramm>

Umgekehrt ordnet die Funktion chr (gemäß ASCII-Tabelle) einer natürlichen Zahl (aus einem bestimmten Zahlenbereich) ein Zeichen zu.

<Black-Box-Diagramm><Funktionsname>chr</Funktionsname><Übergaben><Übergabe><Wert>65</Wert><Variable></Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>'A'</Wert></Rückgabe></Black-Box-Diagramm>

Verschiebung von Zeichen

Beim Verschiebeverfahren wird jedem Buchstaben des (Großbuchstaben-) Alphabets ein verschobener Buchstabe zugeodnet. Für die Zuordnung muss zusätzlich der Schlüssel vorgegeben werden.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| | | | | | | | | | | | | | | | | | | | | | | | | |
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I 

Im vorliegenden Beispiel wird dem Buchstaben K der Buchstabe T zugeordnet. Der Schlüssel für die Verschiebung ist der Buchstabe J.

Wir beschreiben das Verhalten dieser Buchstabenverschiebung mit einer Funktion verschiebung.

Black-Box-Diagramm

Diese neue Funktion lässt sich in Python wie folgt definieren und verwenden.

Aufgabe 1

(a) Erkläre alle Bestandteile des Programms.

(b) Der letzte Funktionsaufruf liefert noch nicht das beabsichtigte Ergebnis. Ändere die Funktionsdefinition geeignet ab. Teste die Funktion dann mit weiteren Funktionsaufrufen

Verschlüsselung mit dem Verschiebeverfahren

Ziel ist es, die Verschlüsselung von Nachrichten mit dem Verschiebeverfahren ebenfalls mit einer Funktion zu realisieren.

Das Verhalten dieser Funktion verschluesselung lässt sich mit einem Black-Box-Diagramm beschreiben.

Black-Box-Diagramm

Für die Implementierung mit einer Funktionsdefinition kann man den folgenden Algorithmus benutzen. Beachte, dass wir davon ausgehen, dass eine Nachricht nur aus den Großbuchstaben 'ABC...XYZ' besteht.

ALGORITHMUS verschluesselung:
Übergabe: text, schluessel
neuerText = ''
für alle Zeichen c in klartext:
    ermittle zum Zeichen c mit dem schluessel das verschobene Zeichen d 
    füge d am Ende an die von neuerText verwaltete Zeichenkette an
Rückgabe: neuerText

Aufgabe 2

Ergänze die Funktionsdefinitionen im folgenden Programmgerüst passend. Benutze für die Funktion verschiebung das (korrekte) Ergebnis aus Aufgabe 1. Die Funktionsdefinition zur Funktion verschluesselung kann sich am gezeigten Algorithmus orientieren. Teste mit verschiedenen Funktionsaufrufen.

# Funktionsdefinitionen
def verschiebung(zeichen, schluessel):
    ...
    return ...

def verschluesselung(klartext, schluessel):
    ...
    return ...

# Funktionsaufrufe
print(verschluesselung('ROM', 'J'))
...

Aufgabe 3

Die Entschlüsselung von Texten, die mit dem Verschiebeverfahren verschlüsselt wurden, sollen mit demselben Schlüssel entschlüsselt werden. Entwickle hierfür eine geeignete Funktion entschluesselung.

Suche

v
6.3.1.3.4.2
dev.inf-schule.de/imperative-programmierung/python/projekte/modularisierung/verschluesselung/funktionenzumverschieben
dev.inf-schule.de/6.3.1.3.4.2
dev.inf-schule.de/@/page/mhqDdZ2mRkCSMbUA

Rückmeldung geben