Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf22:caesar [2022/10/24 11:02] Ivo Blöchliger [Pseudocode] |
lehrkraefte:blc:informatik:glf22:caesar [2022/11/04 09:10] (current) Ivo Blöchliger [Entschlüsseln] |
||
---|---|---|---|
Line 4: | Line 4: | ||
Es gibt also nur 25 mögliche Schlüssel, was die Entschlüsselung auch von Hand trivial macht. | Es gibt also nur 25 mögliche Schlüssel, was die Entschlüsselung auch von Hand trivial macht. | ||
- | ===== Pseudocode ===== | + | ===== Pseudocode |
Im Pseudocode verwenden wir **Variablen**. Diese können im Laufe des Programms Ihre **Werte wechseln** (was in der Mathematik unüblich ist). Z.B. wird der Buchstabe $b$ u.U. mehrmals geändert, bevor er dem Resultat $r$ hinzugefügt wird (das sich auch in jeder Wiederholung ändert). | Im Pseudocode verwenden wir **Variablen**. Diese können im Laufe des Programms Ihre **Werte wechseln** (was in der Mathematik unüblich ist). Z.B. wird der Buchstabe $b$ u.U. mehrmals geändert, bevor er dem Resultat $r$ hinzugefügt wird (das sich auch in jeder Wiederholung ändert). | ||
Line 11: | Line 11: | ||
* $r=$"" | * $r=$"" | ||
* 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 | + | * Wenn $b$ ein Grossbuchstabe ist, sei $b$ der entsprechende |
* Wenn $b$ ein Kleinbuchstabe ist: | * Wenn $b$ ein Kleinbuchstabe ist: | ||
- | * Verschiebe $b$ um $k$ Position | + | * Verschiebe $b$ um $k$ Positionen |
* 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 |
Pseudocode ist eine Beschreibung eines Algorithmus (Rechenvorschrift, | Pseudocode ist eine Beschreibung eines Algorithmus (Rechenvorschrift, | ||
Line 67: | Line 67: | ||
</ | </ | ||
+ | <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 | ||
+ | </ | ||
+ | Wenn der Code dann kopiert und gespeichert ist, kann er wie folgt ausgeführt werden: | ||
+ | <code bash> | ||
+ | python caesar.py | ||
+ | </ | ||
+ | </ | ||
==== 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(' | parser.add_argument(' | ||
parser.add_argument(' | parser.add_argument(' | ||
- | parser.add_argument(' | + | parser.add_argument(' |
# Auswerten | # Auswerten | ||
Line 185: | Line 196: | ||
</ | </ | ||
+ | <WRAP todo> | ||
+ | Knacken Sie folgenden Text: | ||
+ | <code txt> | ||
+ | bliqvkvokvfyevrsjkrveuvjzeujtynzvizxviqlviirkve | ||
+ | </ | ||
+ | <hidden Lösung auf der Kommandozeile> | ||
+ | In diesem Beispiel ist der verschlüsselte Text in der Datei '' | ||
+ | <code bash> | ||
+ | for a in `seq 1 25`; do echo $a; python caesar3.py -k $a -i humpfdidumpf.txt; | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
<WRAP todo> | <WRAP todo> | ||
Line 193: | Line 216: | ||
</ | </ | ||
+ | <WRAP todo> | ||
+ | **Sehr anspruchsvolle Aufgabe** | ||
+ | |||
+ | Entwerfen Sie eine Methode (erst mal als Pseudocode), | ||
+ | |||
+ | <hidden Hilfe> | ||
+ | * https:// | ||
+ | * http:// | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Entschlüsseln ==== | ||
+ | Laden Sie beide Dateien herunter: {{lehrkraefte: | ||
+ | |||
+ | Verwenden Sie das Programm wie folgt: | ||
+ | <code bash> | ||
+ | python decryptor.py secret.txt | ||
+ | </ | ||
+ | Wobei der zu entschlüsselnde Text in der Datei '' |