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-06-06 11:38] gragf_informatik:encryption2 [2026-04-09 09:43] (aktuell) – [Aufgabe 4A – Vigenère-Funktion schreiben] gra
Zeile 29: Zeile 29:
     * <color #00a2e8>Kryptographie:</color> Geheimschriften, Finden von sicheren Verschlüsselungsverfahren     * <color #00a2e8>Kryptographie:</color> Geheimschriften, Finden von sicheren Verschlüsselungsverfahren
     * <color #00a2e8>Kryptoanalyse:</color> Verschlüsselungen analysieren und “knacken”     * <color #00a2e8>Kryptoanalyse:</color> Verschlüsselungen analysieren und “knacken”
-  * <color #00a2e8> Klartext</color> – cleartext, plaintext+  * <color #00a2e8>Klartext</color> – cleartext, plaintext
   * <color #00a2e8>Chiffrat</color> – Geheimtext, ciphertex, verschlüsselter Text    * <color #00a2e8>Chiffrat</color> – Geheimtext, ciphertex, verschlüsselter Text 
-  * <color #00a2e8>Schlüssel</color> – key+  * <color #00a2e8>Schlüssel</color> – key: Zum Beispiel ein Text oder ein Wert, mit dem der Klartext in das Chiffrat und das Chirffat wieder in den Klartext gewandelt werden kann. Der Schlüssel alleine reicht noch nicht aus, um einen verschlüsselten Text zu entschlüsseln: Es braucht auch das richtige Verfahren.
   * <color #00a2e8>Verschlüsselungsverfahren</color>, auch <color #00a2e8>Chiffre</color>: Wandelt den Klartext in das Chiffrat und umgekehrt.   * <color #00a2e8>Verschlüsselungsverfahren</color>, auch <color #00a2e8>Chiffre</color>: Wandelt den Klartext in das Chiffrat und umgekehrt.
   * <color #00a2e8>Schlüsselraum</color> – Anzahl möglicher Schlüssel bei einem Verschlüsselungsverfahren:   * <color #00a2e8>Schlüsselraum</color> – Anzahl möglicher Schlüssel bei einem Verschlüsselungsverfahren:
Zeile 112: Zeile 112:
 </code> </code>
 **Beachte Folgendes:** **Beachte Folgendes:**
-  *  Die Funktion ''uppper()'' macht aus jedem Buchstaben in ''plainText'' einen Grossbuchstaben. Dadurch enthält die Variable ''letter'' immer einen Grossbuchstaben – egal, ob der Buchstabe in ''plainText'' gross oder klein war. Das ist wichtig, denn in der Zeichenkette ''ascii_uppercase'' befinden sich nur Grossbuchstaben und die Funktion ''find()'' würde darin nichts finden, wenn ''letter'' einen Kleinbuchstaben enthielte.+  *  Die Funktion ''upper()'' macht aus jedem Buchstaben in ''plainText'' einen Grossbuchstaben. Dadurch enthält die Variable ''letter'' immer einen Grossbuchstaben – egal, ob der Buchstabe in ''plainText'' gross oder klein war. Das ist wichtig, denn in der Zeichenkette ''ascii_uppercase'' befinden sich nur Grossbuchstaben und die Funktion ''find()'' würde darin nichts finden, wenn ''letter'' einen Kleinbuchstaben enthielte.
   * Damit ''index'' nicht grösser als 25 wird, wird die Addition index + key mit dem Modulo-Operator ergänzt: x modulo 26 (x % 26) gibt den Rest der Division x / 26 zurück: Für alle Werte grösser 26 gibt diese Operation also an, um //wieviel// grösser der Wert ist. Für index = 22 (Buchstabe 'W') und key = 5 ergäbe sich der Rest 1. Der neue Buchstabe wäre dann 'B' ('A' ist an Position 0).   * Damit ''index'' nicht grösser als 25 wird, wird die Addition index + key mit dem Modulo-Operator ergänzt: x modulo 26 (x % 26) gibt den Rest der Division x / 26 zurück: Für alle Werte grösser 26 gibt diese Operation also an, um //wieviel// grösser der Wert ist. Für index = 22 (Buchstabe 'W') und key = 5 ergäbe sich der Rest 1. Der neue Buchstabe wäre dann 'B' ('A' ist an Position 0).
   * In der letzten Zeile in der for-Schleife wird jeweils der neue Buchstabe zu der ''Zeichenkette'' cipherText hinzugefügt.   * In der letzten Zeile in der for-Schleife wird jeweils der neue Buchstabe zu der ''Zeichenkette'' cipherText hinzugefügt.
Zeile 229: Zeile 229:
 Als nicht-knackbar gilt das [[https://de.wikipedia.org/wiki/One-Time-Pad|one-time-pad (OTP)]], eine Einmalverschlüsselung, bei der das Schlüsselwort mindestens so lange wie der Klartext selbst und die eben nur ein einziges mal verwendet wird. Als nicht-knackbar gilt das [[https://de.wikipedia.org/wiki/One-Time-Pad|one-time-pad (OTP)]], eine Einmalverschlüsselung, bei der das Schlüsselwort mindestens so lange wie der Klartext selbst und die eben nur ein einziges mal verwendet wird.
  
-**Auch das Vigenère-Verfahren (mit wiederholt verwendeten Schlüsselwörtern) gilt angesichts heutiger Entschlüsselungsmethoden als unsicher**.+Auch das Vigenère-Verfahren (mit wiederholt verwendeten Schlüsselwörtern) gilt angesichts heutiger Entschlüsselungsmethoden als unsicher.
 \\ \\
  
Zeile 261: Zeile 261:
   * ''key\_count'' zählt durch das Schlüsselwort. Wäre das Schlüsselwort "BOB", so wäre key\_count erst 0, dann 1, dann 2, dann wieder 0 etc. Du musst also schauen, dass key\_count bei jedem Durchgang erhöht wird – aber nicht höher als die Länge des Schlüsselworts. ((Die Länge einer Zeichenkette ermittelst du mit der Funktion ''len(Zeichenkette)''.))   * ''key\_count'' zählt durch das Schlüsselwort. Wäre das Schlüsselwort "BOB", so wäre key\_count erst 0, dann 1, dann 2, dann wieder 0 etc. Du musst also schauen, dass key\_count bei jedem Durchgang erhöht wird – aber nicht höher als die Länge des Schlüsselworts. ((Die Länge einer Zeichenkette ermittelst du mit der Funktion ''len(Zeichenkette)''.))
   * ''shift\_letter'' ist der aktuelle Buchstaben aus dem Schlüsselwort. Wäre das Schlüsselwort "BOB", so wäre shift\_letter erst 'B', dann 'O', dann 'B' etc. Verwende folgende Code-Zeile: ''shift\_letter = key\_word[key\_count].upper()''. Damit ist shift\_letter immer ein Grossbuchstabe.   * ''shift\_letter'' ist der aktuelle Buchstaben aus dem Schlüsselwort. Wäre das Schlüsselwort "BOB", so wäre shift\_letter erst 'B', dann 'O', dann 'B' etc. Verwende folgende Code-Zeile: ''shift\_letter = key\_word[key\_count].upper()''. Damit ist shift\_letter immer ein Grossbuchstabe.
-  * ''shift'' ist der aktuelle Verschiebewert. Wäre das Schlüsselwort "BOB", so wäre ''shift'' erst 1, dann 14, dann 1, dann wieder 1 etc. Um shift zu ermitteln, benötigst du den shift\_letter und die Zeichenkette ''string.ascii\_uppercase''.((Du könntest auf die Variable shift\_letter auch verzichten und shift direkt in einer etwas komplizierteren Codezeile ermitteln. Schritt füt Schritt ist aber einfacher nachvollziehbar.))+  * ''shift'' ist der aktuelle Verschiebewert. Wäre das Schlüsselwort "BOB", so wäre ''shift'' erst 1, dann 14, dann 1, dann wieder 1 etc. Um shift zu ermitteln, benötigst du den shift\_letter und die Zeichenkette ''string.ascii\_uppercase''.((Du könntest auf die Variable shift\_letter auch verzichten und shift direkt in einer etwas komplizierteren Codezeile ermitteln. Schritt für Schritt ist aber einfacher nachvollziehbar.))
 ++++ ++++
  
  • gf_informatik/encryption2.1717673895.txt.gz
  • Zuletzt geändert: 2024-06-06 11:38
  • von gra