ich bin leider noch ein ziemlicher Anfänger in Python und muss für eine Aufgabe einen Vigenere-Decoder erstellen, der eine verschlüsselte Nachricht aus einer Txt-Datei ausliest, diese entschlüsselt und anschließend printed. Die Entschlüsselung habe ich durch einiges Google hinbekommen, jedoch gibt meine Funktion die entschlüsselte Nachricht komplett kleingeschrieben aus. Sie soll aber eigentlich die Groß- und Kleinschreibung der verschlüsselten Nachricht beibehalten.
Hat jemand von euch eine Idee, wie ich das hinbekommen könnte? Ich bin echt am verzweifeln...
Das ist mein Code:
def decipher(dec_key):
alphabet = "abcdefghijklmnopqrstuvwxyz"
dec_string = ""
dec_key = dec_key.lower()
file_message = open("message.txt", "r")
input_string = file_message.read()
input_string = input_string.lower()
file_message.close()
string_length = len(input_string)
expanded_key = dec_key
expanded_key_length = len(expanded_key)
while expanded_key_length < string_length:
expanded_key = expanded_key + dec_key
expanded_key_length = len(expanded_key)
key_position = 0
for letter in input_string:
if letter in alphabet:
position = alphabet.find(letter)
key_character = expanded_key[key_position]
key_character_position = alphabet.find(key_character)
key_position = key_position + 1
new_position = position - key_character_position
if new_position > 26:
new_position = new_position + 26
new_character = alphabet[new_position]
dec_string = dec_string + new_character
else:
dec_string = dec_string + letter
print(dec_string)
und das ist die verschlüsselte Message aus der Txt-Datei, die ich übersetzen soll:
Taei Ambervlq,
Jdi cblu plrm byrmuxq jdi nhpbz jfk lus hzlaeriibci
xikpcuj Tfkrkcec tlt Yejmgba lrl re cs nxqj wrfmfun
xnh fkjhixb qjh jxtujxp ecqcyvl zuyellc ma lroc qhvvtbo
zmjvmlavvw y wnirm jqjh kayj si nbjb yece Zhwdze yvpii
mfu krv asdzvvw bubmexb baexnci plrm uu zs ehr yjxvgb
jk kzoc jk xyx Aqoxzegqjw. Kac bwru bq hegy bl iqkrk ydz
kfeb, qjh nx uyhp gkmlkov t uqn mw mfu heew gi wwjbedah
kh rxa Grlryhmrgq.
Rawk kcwwvul,
B. Zkef BG
Danke im Voraus und liebe Grüße
