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 [2026-05-28 08:33] – [Z1 – Caesar] gra | gf_informatik:encryption2 [2026-05-29 11:43] (aktuell) – [Symmetrische Verschlüsselung] gra | ||
|---|---|---|---|
| Zeile 9: | Zeile 9: | ||
| - Ich kann erklären, wo und wie die // | - Ich kann erklären, wo und wie die // | ||
| - Ich kann erklären, weshalb die // | - Ich kann erklären, weshalb die // | ||
| - | - Ich kann die ASCII-Tabelle verwenden, um das einer Binärzahl | + | - Ich kann die ASCII-Tabelle verwenden, um das einer Binärzahl |
| - Ich kann (noch immer) ohne Taschenrechner Binärzahlen in Dezimalzahlen umwandeln und umgekehrt. | - Ich kann (noch immer) ohne Taschenrechner Binärzahlen in Dezimalzahlen umwandeln und umgekehrt. | ||
| - Ich kann erklären, worin sich die OR-Verknüpfung von der XOR-Verknüpfung unterscheidet. | - Ich kann erklären, worin sich die OR-Verknüpfung von der XOR-Verknüpfung unterscheidet. | ||
| Zeile 27: | Zeile 27: | ||
| === Symmetrische und Asymmetrische Verschlüsselung === | === Symmetrische und Asymmetrische Verschlüsselung === | ||
| - | * Bei der **symmetrischen Verschlüsselung** können Daten mit // | + | * Bei der **symmetrischen Verschlüsselung** können Daten mit // |
| * Bei der Kommunikation im Internet ist das schwierig: Bevor ich eine sichere Verbindung zu einem Server aufbauen kann, müsste ich diesem Server meinen Schlüssel geben – aber eben auf einem sicheren Weg. Ich könnte ihn vielleicht per Post schicken – aber das ist natürlich nicht praktikabel. Deshalb wird hier die **asymmetrische Verschlüsselung** verwendet. Dabei wird für die Verschlüsselung ein //anderer// Schlüssel verwendet als für die Entschlüsselung: | * Bei der Kommunikation im Internet ist das schwierig: Bevor ich eine sichere Verbindung zu einem Server aufbauen kann, müsste ich diesem Server meinen Schlüssel geben – aber eben auf einem sicheren Weg. Ich könnte ihn vielleicht per Post schicken – aber das ist natürlich nicht praktikabel. Deshalb wird hier die **asymmetrische Verschlüsselung** verwendet. Dabei wird für die Verschlüsselung ein //anderer// Schlüssel verwendet als für die Entschlüsselung: | ||
| Zeile 41: | Zeile 41: | ||
| * Der Schlüsselraum für die Caesar-Verschlüsselung ist 25, also knapp 5 Bit. | * Der Schlüsselraum für die Caesar-Verschlüsselung ist 25, also knapp 5 Bit. | ||
| * <color # | * <color # | ||
| - | \\ | + | |
| ===== Caesar-Verschlüsselung (monoalphabetische Substitution) ===== | ===== Caesar-Verschlüsselung (monoalphabetische Substitution) ===== | ||
| Die Caesar-Verschlüsselung ist eine sehr einfache Form der **monoalphabetischen Substitution**. Bei der Substitution werden Buchstaben durch andere Buchstaben **ersetzt** (lat. // | Die Caesar-Verschlüsselung ist eine sehr einfache Form der **monoalphabetischen Substitution**. Bei der Substitution werden Buchstaben durch andere Buchstaben **ersetzt** (lat. // | ||
| Zeile 113: | Zeile 113: | ||
| - 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 151: | ||
| **Wenn alles funktioniert: | **Wenn alles funktioniert: | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| <code python> | <code python> | ||
| Zeile 341: | Zeile 341: | ||
| **Wenn alles funktioniert: | **Wenn alles funktioniert: | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| <code python> | <code python> | ||
| Zeile 368: | Zeile 368: | ||
| * Hierzu könnte '' | * Hierzu könnte '' | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| <code python> | <code python> | ||
| Zeile 434: | Zeile 434: | ||
| - Welche Buchstaben entsprechen den Dezimalzahlen '' | - Welche Buchstaben entsprechen den Dezimalzahlen '' | ||
| - | < | + | < |
| ++++ Lösung:| | ++++ Lösung:| | ||
| - b = 98 | g = 103 | q = 113 | - b = 98 | g = 103 | q = 113 | ||
| Zeile 465: | Zeile 465: | ||
| - notiere das dem Resultat entsprechende ASCII-Zeichen. | - notiere das dem Resultat entsprechende ASCII-Zeichen. | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| < | < | ||
| Zeile 540: | Zeile 540: | ||
| </ | </ | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| **Ausführliche Version:** | **Ausführliche Version:** | ||
| Zeile 585: | Zeile 585: | ||
| </ | </ | ||
| - | === Aufgabe 13 – RGB-Hex-Werte binär und dezimal === | + | === Aufgabe 13 – RGB-Hex-Werte binär und dezimal |
| Du erinnerst dich: Hexadezimalzahlen bestehen aus den Ziffern 0 bis 9 und zusätzlich aus den Buchstaben A bis F. Das heisst: | Du erinnerst dich: Hexadezimalzahlen bestehen aus den Ziffern 0 bis 9 und zusätzlich aus den Buchstaben A bis F. Das heisst: | ||
| * Mit einer Stelle können 16 Werte (0...F) dargestellt werden. | * Mit einer Stelle können 16 Werte (0...F) dargestellt werden. | ||
| Zeile 596: | Zeile 596: | ||
| - Stelle diese drei Dezimalzahlen im [[https:// | - Stelle diese drei Dezimalzahlen im [[https:// | ||
| - | < | + | < |
| ++++Lösung: | ++++Lösung: | ||
| < | < | ||
| Zeile 694: | Zeile 694: | ||
| - Ergänze den Code um weitere Zeilen, sodass er das verschlüsselte Bild 3 Sekunden lang anzeigt und es danach wieder entschlüsselt. Am Ende soll das // | - Ergänze den Code um weitere Zeilen, sodass er das verschlüsselte Bild 3 Sekunden lang anzeigt und es danach wieder entschlüsselt. Am Ende soll das // | ||
| - | === Zusataufgabe | + | === Zusatzaufgabe |
| Erstelle (mithilfe von AI) einen Code, der Bilder mit höherer Auflösung (z.B. im Format png) mit XOR ver- und entschlüsseln kann. Teste mit verschiedenen Bildern. | Erstelle (mithilfe von AI) einen Code, der Bilder mit höherer Auflösung (z.B. im Format png) mit XOR ver- und entschlüsseln kann. Teste mit verschiedenen Bildern. | ||
| - | ==== Zusätzliche Aufgaben zum Üben ==== | + | ===== Zusätzliche Aufgaben zum Üben ===== |
| === Z1 – Caesar === | === Z1 – Caesar === | ||
| - Verschlüssle " | - Verschlüssle " | ||
| Zeile 713: | Zeile 713: | ||
| === Z2 – Zufällige monoalphabetische Substitution === | === Z2 – Zufällige monoalphabetische Substitution === | ||
| + | Entschlüssle die Nachricht " | ||
| + | |||
| + | < | ||
| + | ABCDEFGHIJKLMNOPQRSTUVWXYZ # Alphabet | ||
| + | SOGVNPKWEFLMUJDHZRAIYTBXCQ # Schlüssel | ||
| + | </ | ||
| + | |||
| + | Tipp: Schreibe einen kurzen Code zum Entschlüsseln – das geht schneller und macht mehr Spass! | ||
| + | |||
| + | ++++Lösung: | ||
| + | <code python> | ||
| + | secret = " | ||
| + | alphabet = " | ||
| + | message = " | ||
| + | |||
| + | result = "" | ||
| + | for letter in message: | ||
| + | index = secret.find(letter) | ||
| + | result += alphabet[index] | ||
| + | print(result) | ||
| + | </ | ||
| + | ++++ | ||
| + | |||
| + | === Z3 – Vigenère entschlüsseln === | ||
| + | Entschlüssele folgenden nach Vigenère verschlüsselten Geheimtext mit dem Schlüsselwort TAUBE: | ||
| + | < | ||
| + | EIYCIK DYO WIANA MG DYS LTNX | ||
| + | </ | ||
| + | ++++Lösung: | ||
| + | LIEBER DEN SPATZ IN DER HAND | ||
| + | ++++ | ||
| + | === Z4 – Vigenère-Code erweitern === | ||
| + | Verändere folgende Vigènere-Funktion so, dass auch Abstände verschlüsselt werden (und korrekt wieder entschlüsselt werden): | ||
| + | < | ||
| + | import string | ||
| + | |||
| + | def vigenere(message, | ||
| + | alphabet = string.ascii_uppercase | ||
| + | ciphertext = "" | ||
| + | key_index = 0 | ||
| + | for letter in message.upper(): | ||
| + | if letter in alphabet: | ||
| + | index = alphabet.find(letter) | ||
| + | shift_letter = key_word[key_index].upper() | ||
| + | key_index = (key_index + 1) % len(key_word) | ||
| + | shift = alphabet.find(shift_letter) | ||
| + | letter = alphabet[(index+shift*crypt)%26] | ||
| + | ciphertext = ciphertext + letter | ||
| + | return ciphertext | ||
| + | |||
| + | text = "Das Dschungelbuch" | ||
| + | key = " | ||
| + | cipher = (vigenere(text, | ||
| + | print(cipher) | ||
| + | print(vigenere(cipher, | ||
| + | </ | ||
| + | |||
| + | ++++Lösung: | ||
| + | - In Zeile 4 das alphabet um ein Leerzeichen erängzen und | ||
| + | - in Zeile 13 den Modulo-Operand der neuen Alphabet-Länge anpassen. | ||
| + | ++++ | ||
| + | === Z5 – Umwandlungen ASCII BIN DEC HEX === | ||
| + | - Wie lautet der Hexwert für das ASCII-Zeichen G? | ||
| + | - Wie lautet der Dezimalwert für das ASCII-Zeichen f? | ||
| + | - Welches Zeichen findet sich unter dem Hexwert 0x77? | ||
| + | - Welches Zeichen findet sich unter dem Dezimalwert 61? | ||
| + | |||
| + | ++++Lösung: | ||
| + | < | ||
| + | 1. G: 100' | ||
| + | 2. f: 110' | ||
| + | 3. 0x77 = 111' | ||
| + | 4. 61 = 011' | ||
| + | </ | ||
| + | ++++ | ||
| + | === Z6 – XOR entschlüsseln === | ||
| + | Entschlüssle den xor-verschlüsselten Text **qxj** mit dem Schlüssel '' | ||
| + | |||
| + | ++++Lösung: | ||
| + | PIA | ||
| + | ++++ | ||