Vigene`re Chiffre entschlüsseln
Verfasst: Montag 31. Oktober 2022, 12:18
Hallo, ich brauch mal eure Hilfe,
ich versuche mir eben zusamen mit ein paar Krypto begeisterten Python beizubringen. Hierzu haben wir versucht die Vigene`re Chiffre zu implementieren und eine Funktion verschluessen definiert:
Das funktioniert auch soweit. Nun wollten wir eine Entschlüsselungsdfunktion programmieren und kamen schonmal bis hier hin :
Frage: Soweit ich es verstanden habe, muss die Funktion verschluessele umgekehrt werden?
Allerdings haben wir keine Ahnung wie wir das schrieben müssen. Kann uns hier jemand helfen? ist für einen guten Zweck.
DANKE
Uli
ich versuche mir eben zusamen mit ein paar Krypto begeisterten Python beizubringen. Hierzu haben wir versucht die Vigene`re Chiffre zu implementieren und eine Funktion verschluessen definiert:
Code: Alles auswählen
[b][i] def verschluessle(self, klartext_p, schluessel_p):
liste_text_verschluesselt = []
buchstabe_A_in_ASCII = ord("A") #65
# Methoden aufrufen
klartext_bereinigt = self.bereinige_klartext(
klartext_p=klartext_p )
schluessel = self.verlaengere_schluessel(
schluessel_p,
len(klartext_bereinigt))
for durchlauf_zaehler, buchstabe_aktuell \
in enumerate(klartext_p):
klartext_index = ord(buchstabe_aktuell) \
- buchstabe_A_in_ASCII
schluessel_index = ord(schluessel[durchlauf_zaehler]) \
- buchstabe_A_in_ASCII
buchstabe_verschluesselt = self.verschluesselungstabelle \
[schluessel_index][klartext_index]
liste_text_verschluesselt.append(buchstabe_verschluesselt)
text_verschluesselt_string = "" .join(liste_text_verschluesselt)
# fasst die Chiffratbuchstaben zu einer Zeichenkette zusammen
return text_verschluesselt_string
# verschluesselung beendet[/i][/b]
Code: Alles auswählen
[b][i] def bereinige_klartext(self, klartext_p):
klartext_grossbuchstaben = klartext_p.upper()
import re
klartext_bereinigt = re.sub(pattern ="[^A-Z]",
string = klartext_grossbuchstaben,
repl = "")
print("Klartext nicht bereinigt:\n ", klartext_p)
print("Klartext bereinigt:\n", klartext_bereinigt)
return klartext_bereinigt
def verlaengere_schluessel(self, schluessel_p, laenge_klartext_p):
schluessel_laenge = len(schluessel_p)
schluessel_grossbuchstaben = schluessel_p.upper()
schluessel_liste = []
for i in range(0, laenge_klartext_p, 1):
schluessel_index = i % schluessel_laenge
schluessel_buchstabe = schluessel_grossbuchstaben[schluessel_index]
schluessel_liste.append(schluessel_buchstabe)
verlaengerter_schluessel = "".join(schluessel_liste)
print("\nKernschlüssel:\n", schluessel_p)
print("\nVerlängerter Schlüssel:\n", verlaengerter_schluessel)
return verlaengerter_schluessel
[/i][/b]
Allerdings haben wir keine Ahnung wie wir das schrieben müssen. Kann uns hier jemand helfen? ist für einen guten Zweck.
DANKE
Uli