Verschlüsselung

Bei der Caesar-Verschlüsselung werden alle Buchstaben um eine Anzahl Stellen verrückt:

Schreibe eine Funktion caesar(klartext, n), die die Cäsar-Verschlüsselung umsetzt.

  • Gebe nur Grossbuchstaben aus.
  • Zeichen, die keine Buchstaben sind, sollen nicht verändert werden.
  • Wie kannst du das Chiffrat (den Ciphertext) entschlüsseln?

Ein paar Tipps

Du kannst über die Buchstaben eines Strings laufen wie über die Elemente einer Liste:

s = "Hallo KSR"
for buchstabe in s:
    print(buchstabe)

Einen String in Grossbuchstaben umwandeln:

print("Hallo KSR".upper())
>>> HALLO KSR

Alle Grossbuchstaben können in string.ascii_uppercase abgefragt werden. Mit str.find() können wir den Index (oder -1) finden:

import string
 
for buchstabe in "HALLO":
    print(string.ascii_uppercase.find(buchstabe))
 
>>>
7
0
11
11
14

Der Modulo-Operator % gibt uns den Rest der Ganzzahl-Division zurück. Das ist praktisch, um den Index wieder bei A starten zu lassen, wenn er grösser als Z wird:

import string
 
klartext = "Z"
index = string.ascii_uppercase.find(klartext)
index += 3
index = index % len(string.ascii_uppercase)
ciphertext = string.ascii_uppercase[index]
print(ciphertext)
 
>>> C

Statt einer fixen Verschiebung soll jeder Buchstabe durch einen beliebigen anderen ersetzt werden. Der Schlüssel ist also nicht mehr einfach eine Zahl n, sondern ein String mit Länge 26, der für jeden Buchstaben A-Z dessen Entsprechung enthält.

Schreibe eine Funktion substitution(cleartext, key), die den so verschlüsselten Text zurückgibt. Braucht es eine separate Funktion für die Dechiffrierung?

  • gf_informatik/verschluesselung.1645742908.txt.gz
  • Zuletzt geändert: 2022-02-24 22:48
  • von hof