Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:encryption2 [2024-04-26 11:53] – [Symmetrische Verschlüsselung] gra | gf_informatik:encryption2 [2024-06-06 11:38] (aktuell) – gra | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Symmetrische Verschlüsselung ====== | ====== Symmetrische Verschlüsselung ====== | ||
<nodisp 2> | <nodisp 2> | ||
- | ++++HIDDEN – Verbesserungen für diese Seite:| | + | ++++HIDDEN – Verbesserungsvorschläge:| |
- | * Schüler: | + | |
- | * Möglichst viele Übungsaufgaben vor und zwischen den Aufgaben einfügen: For-Schleifen üben, Veränderungen von Zeichenketten üben, evtl. eine Funktion für die zufällige monoalphabetische Sub. analog Caesar, zwei Zeichenketten parallell durchgehen üben etc. | + | * **Lösungen:** |
+ | * Möglichst viele Übungsaufgaben vor und zwischen den Aufgaben einfügen: For-Schleifen üben, Veränderungen von Zeichenketten | ||
* Evtl. Lernziel ändern: Funktionen Vigenere, XOR und Caesar müssen am Ende nur // | * Evtl. Lernziel ändern: Funktionen Vigenere, XOR und Caesar müssen am Ende nur // | ||
* Das gemeinsam besprochene Vorgehen (erst Schritte in normaler Sprache (als Kommentare) notieren, dann diese in Code wandeln) muss ebenfalls früh geübt werden. | * Das gemeinsam besprochene Vorgehen (erst Schritte in normaler Sprache (als Kommentare) notieren, dann diese in Code wandeln) muss ebenfalls früh geübt werden. | ||
Zeile 121: | Zeile 122: | ||
- Verbessere das Programm so, dass Leerschläge nicht verschoben werden, sodass das Chiffrat an den gleichen Stellen Leerschläge enthält wie der Klartext. Dein Programm soll erst den Klartext, dann das Chiffrat ausgeben. | - Verbessere das Programm so, dass Leerschläge nicht verschoben werden, sodass das Chiffrat an den gleichen Stellen Leerschläge enthält wie der Klartext. Dein Programm soll erst den Klartext, dann das Chiffrat ausgeben. | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python caesar_01.py> | <code python caesar_01.py> | ||
Zeile 151: | Zeile 152: | ||
- Nutze die Funktion caesar(), um aus dem Chifrat wieder den Klartext zu generieren. Ergänze dein Programm, sodass es auch noch den dechiffrierten Klartext ausgibt. | - Nutze die Funktion caesar(), um aus dem Chifrat wieder den Klartext zu generieren. Ergänze dein Programm, sodass es auch noch den dechiffrierten Klartext ausgibt. | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 244: | Zeile 245: | ||
- Welche Änderungen bzw. Ergänzungen musst du an der Caesar-Funktion vornehmen, damit sie zur Vigenere-Funktion wird und obige Anforderungen erfüllt? Notiere deine Ideen als Kommentare im Code. | - Welche Änderungen bzw. Ergänzungen musst du an der Caesar-Funktion vornehmen, damit sie zur Vigenere-Funktion wird und obige Anforderungen erfüllt? Notiere deine Ideen als Kommentare im Code. | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
- Der Name der Funktion und die Namen der Argumente ändern sich. | - Der Name der Funktion und die Namen der Argumente ändern sich. | ||
Zeile 263: | Zeile 264: | ||
++++ | ++++ | ||
- | ++++Test:| | + | ++++Testcode:| |
Teste die Vigenere-Funktion mit folgendem Code: | Teste die Vigenere-Funktion mit folgendem Code: | ||
Zeile 278: | Zeile 279: | ||
++++ | ++++ | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 305: | Zeile 306: | ||
* Hierzu könnte '' | * Hierzu könnte '' | ||
- | < | + | < |
++++Lösung: | ++++Lösung: | ||
<code python> | <code python> | ||
Zeile 423: | Zeile 424: | ||
\\ | \\ | ||
=== Aufgabe 7 – XOR-Verschlüsselung in python programmieren === | === Aufgabe 7 – XOR-Verschlüsselung in python programmieren === | ||
- | Schreibe eine Funktion '' | + | Schreibe eine Funktion '' |
- | * Der Funktion übergibt man die Nachricht | + | * Der Funktion übergibt man die Nachricht und das Schlüsselwort. |
* Die Funktion gibt den ver- bzw. entschlüsselten Text zurück. | * Die Funktion gibt den ver- bzw. entschlüsselten Text zurück. | ||
* Auch Satzzeichen und Leerschläge werden verschlüsselt. | * Auch Satzzeichen und Leerschläge werden verschlüsselt. | ||
Zeile 433: | Zeile 434: | ||
* Der XOR-Operator in python ist ein '' | * Der XOR-Operator in python ist ein '' | ||
+ | <nodisp 1> | ||
++++Lösung: | ++++Lösung: | ||
**Ausführliche Version:** | **Ausführliche Version:** | ||
<code python> | <code python> | ||
- | def cryptXOR(plainText, keyWord): | + | def crypt_xor(message_in, key_word): |
- | | + | |
- | | + | |
- | for letter in plainText: | + | for letter in message_in: |
- | | + | |
- | | + | |
- | | + | |
- | letter = chr(asciiResult) # Zeichen zu diesem neuen ASCII-Code ermitteln | + | letter = chr(code_message_out) |
- | | + | |
- | cipherText = cipherText + letter | + | key_count |
- | return | + | return |
</ | </ | ||
**Kompakte Version:** | **Kompakte Version:** | ||
<code python> | <code python> | ||
- | def cryptXOR(plainText, keyWord): | + | def crypt_xor(message_in, key_word): |
- | | + | |
- | | + | |
- | for letter in plainText: | + | for letter in message_in: |
- | letter = chr(ord(letter) ^ ord(keyWord[kCount])) | + | letter = chr(ord(letter) ^ ord(key_word[key_count])) |
- | | + | |
- | cipherText = cipherText + letter | + | key_count |
- | return | + | return |
</ | </ | ||
++++ | ++++ | ||
+ | </ | ||
\\ | \\ | ||
=== Aufgabe 8 – Funktion cryptXOR testen === | === Aufgabe 8 – Funktion cryptXOR testen === | ||
Zeile 468: | Zeile 470: | ||
<code python> | <code python> | ||
key = " | key = " | ||
- | cipher = cryptXOR("Nur ein garstiges Aschenputtel ist noch da. Das sitzt unten in der Asche, dem kann der Pantoffel nicht passen!", | + | cipher = crypt_xor("Nur ein garstiges Aschenputtel ist noch da. Das sitzt unten in der Asche, dem kann der Pantoffel nicht passen!", |
print(cipher) | print(cipher) | ||
- | print(cryptXOR(cipher, key)) | + | print(crypt_xor(cipher, key)) |
</ | </ | ||