Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:encryption2 [2024-04-26 11:54] – [Symmetrische Verschlüsselung] gragf_informatik:encryption2 [2024-06-06 11:38] (aktuell) gra
Zeile 2: Zeile 2:
 <nodisp 2> <nodisp 2>
 ++++HIDDEN – Verbesserungsvorschläge: ++++HIDDEN – Verbesserungsvorschläge:
-  * Schüler:innen kommen grösstenteils nicht von selbst auf Vigenere-Funktion: Trotz vieler Tipps und ausgehend von der zuvor sehr genau betrachteten Caesar-Funktion, scheinen die meisten keine Ahnung zu haben, wie sie die Aufgabe angehen könnten. Auch eine vorgängige gemeinsame Besprechung und Zusammentragung der nötigen Änderungen gegenüber Ceasar half bei den meisten nur wenig. Sind die Tipps und anleitende Hilfestellungen eher verwirrend? Folgende Ideen+  * **Problem:** Schüler:innen kommen grösstenteils nicht von selbst auf Vigenere- oder XOR-Funktion: Trotz vieler Tipps und ausgehend von der zuvor sehr genau betrachteten Caesar-Funktion, scheinen die meisten nicht die geringste Ahnung zu haben, wie sie die Aufgabe angehen könnten. Auch eine vorgängige gemeinsame Besprechung und Zusammentragung der nötigen Änderungen gegenüber Ceasar half bei den meisten nur wenig. Sind die Tipps und anleitende Hilfestellungen eher verwirrend? 
-    * 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 (mit eckigen Klammern) üben, evtl. eine Funktion für die zufällige monoalphabetische Sub. analog Caesar, zwei Zeichenketten parallell durchgehen üben etc. Sie müssen die nötigen Elemente sehr gut kennen.
     * Evtl. Lernziel ändern: Funktionen Vigenere, XOR und Caesar müssen am Ende nur //verstanden// werden. Selbst programmieren können müssen sie die Übungen, welche die einzelnen Teile dieser Funktionen vertiefen.     * Evtl. Lernziel ändern: Funktionen Vigenere, XOR und Caesar müssen am Ende nur //verstanden// werden. Selbst programmieren können müssen sie die Übungen, welche die einzelnen Teile dieser Funktionen vertiefen.
     * 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.
  
-<nodisp 2>+<nodisp 1>
 ++++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.
  
-<nodisp 2>+<nodisp 1>
 ++++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.
  
-<nodisp 2>+<nodisp 1>
 ++++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:
 ++++ ++++
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 <code python> <code python>
Zeile 305: Zeile 306:
   * Hierzu könnte ''encrypt'' einfach als Faktor verwendet werden, dann bräuchte es keine if-Abfrage.   * Hierzu könnte ''encrypt'' einfach als Faktor verwendet werden, dann bräuchte es keine if-Abfrage.
  
-<nodisp 2>+<nodisp 1>
 ++++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 ''cryptXOR(plainTextkeyWord)'': +Schreibe eine Funktion ''crypt\_xor(message\_inkey\_word)'': 
-  * Der Funktion übergibt man die Nachricht (Klartext) und das Schlüsselwort.+  * 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 ''^'' (auf deiner Tastatur rechts neben dem Fragezeichen):   * Der XOR-Operator in python ist ein ''^'' (auf deiner Tastatur rechts neben dem Fragezeichen):
  
 +<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 **Ausführliche Version:** **Ausführliche Version:**
 <code python> <code python>
-def cryptXOR(plainTextkeyWord): +def crypt_xor(message_inkey_word): 
-    kCount 0 +    message_out "" 
-    cipherText "" +    key_count 0 
-    for letter in plainText+    for letter in message_in
-        asciiClear = ord(letter) # ASCII-Code vom Klartextbuchstaben ermitteln  +        code_message_in = ord(letter) 
-        asciiKey = ord(keyWord[kCount]) # ASCII-Code vom Schlüsselwort-Buchstaben ermitteln +        code_key = ord(key_word[key_count]) 
-        asciiResult asciiClear asciiKey # Beide Codes verXORen +        code_message_out code_message_in code_key 
-        letter = chr(asciiResult# Zeichen zu diesem neuen ASCII-Code ermitteln +        letter = chr(code_message_out
-        kCount = (kCount + 1) % len(keyWord) +        message_out = message_out + letter 
-        cipherText = cipherText + letter +        key_count = (key_count + 1) % len(key_word
-    return cipherText+    return message_out
 </code> </code>
  
 **Kompakte Version:** **Kompakte Version:**
 <code python> <code python>
-def cryptXOR(plainTextkeyWord): +def crypt_xor(message_inkey_word): 
-    kCount 0 +    message_out "" 
-    cipherText "" +    key_count 0 
-    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])) 
-        kCount = (kCount + 1) % len(keyWord) +        message_out = message_out + letter 
-        cipherText = cipherText + letter +        key_count = (key_count + 1) % len(key_word
-    return cipherText+    return message_out
 </code> </code>
 ++++ ++++
 +</nodisp>
 \\ \\
 === Aufgabe 8 – Funktion cryptXOR testen === === Aufgabe 8 – Funktion cryptXOR testen ===
Zeile 468: Zeile 470:
 <code python> <code python>
 key = "WOLF" key = "WOLF"
-cipher = cryptXOR("Nur ein garstiges Aschenputtel ist noch da. Das sitzt unten in der Asche, dem kann der Pantoffel nicht passen!", key)+cipher = crypt_xor("Nur ein garstiges Aschenputtel ist noch da. Das sitzt unten in der Asche, dem kann der Pantoffel nicht passen!", key)
 print(cipher) print(cipher)
-print(cryptXOR(cipher, key))+print(crypt_xor(cipher, key))
 </code> </code>
  
  • gf_informatik/encryption2.1714132496.txt.gz
  • Zuletzt geändert: 2024-04-26 11:54
  • von gra