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