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 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.1666602333.txt.gz
  • Last modified: 2022/10/24 11:05
  • by Ivo Blöchliger