Lernziele
- Sie haben den Vigenère-Cipher in Python umgesetzt und verstehen den Code. Insbesondere
- wie wir durch die Buchstaben zweier Wörter gleichzeitig iteriert haben,
- wie wir die Buchstaben solange nötig wiederholt haben,
- und wie wir die Caesar-Funktionen wiederverwendet haben.
Wir schreiben nun zwei Funktionen, um einen String mit einem Vignère-Cipher zu verschlüsseln: vignere_encrypt
und vignere_decrypt
. Hierzu folgendes Erklärvideo
Im Video werden folgende Fragen beantwortet.
-
Beantworten Sie mit Pseudocode: Wie könnten Sie
caesar_encrypt
nutzen, um den Vignère-Cipher zu implementieren? -
Der Schlüssel soll sich ja immer wiederholen. Wie könnten Sie das in Python lösen? Hier ein Tipp: Sie können bei Zeichenketten ein einzelnes Zeichen mit seiner Position adressieren, wie bei einer Liste. Sie brauchen also eine Rechnung für die Schlüsselposition.
Sagen wir mal, Sie wüssten den aktuellen Schlüsselbuchstaben. Wie würden Sie daraus in Python die Verschiebung ableiten?
- Versuchen Sie die Funktion zu implementieren. Hierzu einige Tipps:
- Sie können den
return
-Wert voncaesar_encrypt
weiterverarbeiten, z.B. aneinanderhängen. - Mit
len()
erhalten Sie die Länge einer Liste oder auch einer Zeichenkette. z.B. so:
- Sie können den
Vigenère-Verschlüsselung mit Python
vigenere.pyfrom caesar_komplett import caesar_encrypt, caesar_decrypt def vigener_encrypt(klartext, key): ciphertext = "" for i in range(len(klartext)): original_buchstabe = klartext[i] verschiebung = ord(key[i % len(key)]) ciphertext = ciphertext + caesar_encrypt(original_buchstabe, verschiebung) return ciphertext def vigener_decrypt(ciphertext, key): entschluesselt = "" for i in range(len(ciphertext)): cipher_buchstabe = ciphertext[i] verschiebung = ord(key[i % len(key)]) entschluesselt = entschluesselt + caesar_decrypt(cipher_buchstabe, verschiebung) return entschluesselt # Dieses if führt dazu, dass die Tests nur ausgeführt werden, wenn diese Datei selbst ausgeführt wird, aber nicht, wenn sie importiert wird. if __name__ == "__main__": # Beispielaufruf ciphertext = "Wir treffen uns im Cybercafe, follow the white rabbit." schluessel = "SCHLUESSEL" ciphertext = vigener_encrypt(ciphertext, schluessel) print("Ciphertext:", ciphertext) entschluesselt = vigener_decrypt(ciphertext, schluessel) print("Entschlüsselt:", entschluesselt)
Last updated on