lehrkraefte:blc:informatik:glf22:caesar

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf22:caesar [2022/10/24 11:05]
Ivo Blöchliger [Pseudocode]
lehrkraefte:blc:informatik:glf22:caesar [2022/11/04 09:10] (current)
Ivo Blöchliger [Entschlüsseln]
Line 11: Line 11:
   * $r=$"" (leerer Text)   * $r=$"" (leerer Text)
   * Für jeden Buchstaben $b$ im Text $t$:   * Für jeden Buchstaben $b$ im Text $t$:
-    * Wenn $b$ ein Grossbuchstabe ist, sei $b$ der entsprechende Kleinbuchstaben+    * Wenn $b$ ein Grossbuchstabe ist, sei $b$ der entsprechende Kleinbuchstabe
     * Wenn $b$ ein Kleinbuchstabe ist:     * Wenn $b$ ein Kleinbuchstabe ist:
-      * Verschiebe $b$ um $k$ Position im Alphabet+      * Verschiebe $b$ um $k$ Positionen im Alphabet
     * Hänge $b$ hinten an $r$ an.     * Hänge $b$ hinten an $r$ an.
   * Das Resultat ist $r$.   * Das Resultat ist $r$.
Line 20: Line 20:
  
  
-==== Pseudocode ====+==== Pseudocode allgemein ====
 Pseudocode ist eine Beschreibung eines Algorithmus (Rechenvorschrift, z.B. ein Computerprogramm), die von Menschen gelesen werden soll. Ein Pseudocode richtet sich an ein bestimmtes Publikum und kann mehr oder weniger viele Elemente aus einer bestimmten Programmiersprache enthalten. Pseudocode ist eine Beschreibung eines Algorithmus (Rechenvorschrift, z.B. ein Computerprogramm), die von Menschen gelesen werden soll. Ein Pseudocode richtet sich an ein bestimmtes Publikum und kann mehr oder weniger viele Elemente aus einer bestimmten Programmiersprache enthalten.
  
Line 67: Line 67:
 </code> </code>
  
 +<WRAP todo> 
 +Gehen Sie in ein geeignetes Verzeichnis (eventuell neu anlegen) und öffnen Sie eine neue Datei in VSCode: 
 +<code bash> 
 +mkdir caesar 
 +cd caesar 
 +code caesar.py 
 +</code> 
 +Wenn der Code dann kopiert und gespeichert ist, kann er wie folgt ausgeführt werden: 
 +<code bash> 
 +python caesar.py 
 +</code> 
 +</WRAP>
 ==== In- und Output mit Dateien ==== ==== In- und Output mit Dateien ====
 Es werden direkt im Programmcode zwei Dateien und der Schlüssel festgelegt: Es werden direkt im Programmcode zwei Dateien und der Schlüssel festgelegt:
Line 125: Line 136:
 parser.add_argument('-i', '--infile', type=str, help="Optional: Datei, wovon gelesen werden soll.") parser.add_argument('-i', '--infile', type=str, help="Optional: Datei, wovon gelesen werden soll.")
 parser.add_argument('-o', '--outfile', type=str, help="Optional: Datei, wohin das Resultat geschrieben werden soll.") parser.add_argument('-o', '--outfile', type=str, help="Optional: Datei, wohin das Resultat geschrieben werden soll.")
-parser.add_argument('-f', '--force', action="store_true", help="Output-Datei wird überschreiben, falls sie schon existiert");+parser.add_argument('-f', '--force', action="store_true", help="Output-Datei wird überschrieben, falls sie schon existiert");
  
 # Auswerten # Auswerten
Line 185: Line 196:
 </WRAP> </WRAP>
  
 +<WRAP todo>
 +Knacken Sie folgenden Text:
 +<code txt>
 +bliqvkvokvfyevrsjkrveuvjzeujtynzvizxviqlviirkve
 +</code>
 +<hidden Lösung auf der Kommandozeile>\
 +In diesem Beispiel ist der verschlüsselte Text in der Datei ''humpfdidumpf.txt'' gespeichert.
 +<code bash>
 +for a in `seq 1 25`; do  echo $a; python caesar3.py -k $a -i humpfdidumpf.txt; done
 +</code>
 +</hidden>
 +</WRAP>
  
 <WRAP todo> <WRAP todo>
Line 196: Line 219:
 **Sehr anspruchsvolle Aufgabe** **Sehr anspruchsvolle Aufgabe**
  
-Programmieren Sie ein Programm (erst mal als Pseudocode), das beliebige deutsche verschleierte Texte automatisch entschlüsselt.+Entwerfen Sie eine Methode (erst mal als Pseudocode), das beliebige deutsche verschleierte Texte automatisch entschlüsselt (bzw. den wahrscheinlichsten Schlüssel findet). 
 + 
 +<hidden Hilfe> 
 + * https://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit 
 + * http://www.mathe.tu-freiberg.de/~hebisch/cafe/kryptographie/bigramme.html 
 +</hidden>
 </WRAP> </WRAP>
  
 +
 +==== Entschlüsseln ====
 +Laden Sie beide Dateien herunter: {{lehrkraefte:blc:informatik:glf22:decryptor.py}} {{lehrkraefte:blc:informatik:glf22:bigramme.py}}
 +
 +Verwenden Sie das Programm wie folgt:
 +<code bash>
 +python decryptor.py secret.txt
 +</code>
 +Wobei der zu entschlüsselnde Text in der Datei ''secret.txt'' gespeichert ist (kann natürlich auch anders heissen).
  • lehrkraefte/blc/informatik/glf22/caesar.1666602323.txt.gz
  • Last modified: 2022/10/24 11:05
  • by Ivo Blöchliger