Vigenere cipher 'String Index außerhalb des Bereichs' für die Entschlüsselung

Meine Vigenere-Chiffre funktioniert perfekt für die Verschlüsselung, aber ich muss nur dieses Problem für die Entschlüsselung beheben, wo mir nach dem Ausführen des Programms gesagt wird, dass der String-Index außerhalb des Bereichs liegt. Könnte mir jemand bitte wissen lassen, was ich brauche, um es zu ändern, wäre ich sehr dankbar, wenn man könnte.

Edit: Ich habe den Teil des Codes geändert, der das String-Index-Problem verursacht hat, aber jetzt, wenn die Entschlüsselung verarbeitet wird, ist die Ausgabe eine Leerzeile mit 'None' darunter und kein Fehler.

Bearbeiten: ord (_key_text [Buchstaben% len (_key_text)]) Ich musste _key_text mit _key_phrase auf dieser Seite der Gleichung in entschlüsselung ersetzen.

#encryption def encrypt(): crypt = '' key_phrase = raw_input("Please enter a key phrase to encrypt by: ") key_phrase = key_phrase.upper() key_text = raw_input("Please enter a piece of text to encrypt: ") key_text = key_text.upper() if len(key_text) == 0: print("Key must be of length 1 or more."); exit() if not key_text.isalpha() or not key_phrase.isalpha(): print("Both text and key must be composed of letters only."); exit() for letters in range(0, len(key_text)): new = ord(key_text[letters]) + ord(key_text[letters%len(key_text)]) - 65 if new > 90: new -= 26 crypt += chr(new) print crypt #decryption def decrypt(): decrypt = '' _key_phrase = raw_input("Please enter a key phrase to encrypt by: ") _key_phrase = _key_phrase.upper() _key_text = raw_input("Please enter a piece of text to encrypt: ") _key_text = _key_text.upper() if len(_key_text) == 0: print("Key must be of length 1 or more."); exit() if not _key_text.isalpha() or not _key_phrase.isalpha(): print("Both text and key must be composed of letters only."); exit() for letters in range(0, len(_key_text)): new = ord(_key_text[letters]) - ord(_key_text[letters%len(_key_text)]) + 65 if new < 65: new += 26 decrypt == chr(new) print decrypt #asking the user to enter a or b for en/decryption and whether they wish to continue choice = raw_input("Please enter either 'a' for encryption or 'b' for decryption: ") if choice == 'a': print encrypt() else: print decrypt() 

    One Solution collect form web for “Vigenere cipher 'String Index außerhalb des Bereichs' für die Entschlüsselung”

    Wenn Ihr Schlüsseltext länger ist als Schlüsselphrase, erhalten Sie hier einen ungültigen Index: new = ord(_key_phrase[letters]) - ord(_key_text[letters%len(_key_text)]) Wenn letters größer werden als len(_key_text)

    Sie haben key_text an beiden Orten in encryption und key text und key phrase in Entschlüsselung, so müssen Sie eine Variable hier ändern.

    Python ist die beste Programmiersprache der Welt.