einfaches Caesar-Chiffre Programm in Python?
Hallo,
Ich habe versucht ein einfaches Caesar-Chiffre-Programm in Python zu schreiben
bisher bin ich soweit gekommen:
import string
def listAlphabet():
return list(string.ascii_uppercase)
def crypt():
klartext = str(input("Hier Text/Wort zur Verschlüsselung eingeben: "))
klartext = klartext.upper()
i = len(klartext)
schluessel = int(input("Um wie viele stellen soll verschoben werden? "))
for i in range(i):
if klartext[0] == " ":
print(" ")
i += 1
else:
hashed = klartext[0] - listAlphabet([schluessel])
print(hashed)
i += 1
go = True
while go:
listAlphabet()
crypt()
Ich will keinen Code, sondern nur wissen, ob ich in irgendeiner Form auf dem richtigen Weg bin, oder wie ich konkret an die Sache rangehen soll
Danke
1 Antwort
Die Caesar-Verschlüsselung lässt sich mit einer einfachen mathematischen Formel abbilden:
Wobei wir bei den einzelnen Elementen natürlich von der numerischen Darstellung reden (a = 0, b = 1, usw.).
Der erste Term ist sicherlich klar. Auf den Wert des Buchstabens wird die gewählte Verschiebung summiert. Die Division mit Rest (% = Modulooperator) durch 26 (Anzahl der Buchstaben des Alphabets) sorgt dafür, dass die Zählung wieder am Anfang beginnt.
Dies einmal angewandt auf zwei Beispiele:
Zu verschlüsselnder Text: hallo
Verschiebung: 4
h = (8 + 4) % 26 = 12 = l
a = (1 + 4) % 26 = 5 = e
l = (12 + 4) % 26 = 16 = p
o = (15 + 4) % 26 = 19 = s
Ergebnis: lepps
---------------
Zu verschlüsselnder Text: wolke
Verschiebung: 6
w = (23 + 6) % 26 = 3 = c
o = (15 + 6) % 26 = 21 = u
l = (12 + 6) % 26 = 18 = r
k = (11 + 6) % 26 = 17 = q
e = (5 + 6) % 26 = 11 = k
Diese Rechnung kannst du auch auf Python anwenden. Der Modulo-Operator existiert mit im Sprachschatz.