Виженер Шифр: Проблемы с - PullRequest
0 голосов
/ 12 июля 2020

Я следил за python учебником по шифрованию Vigenere (https://www.youtube.com/watch?v=sxFObRNriUg), и одна из моих проблем заключается в том, что я постоянно получаю ключевые ошибки (что понятно), но я не Я не понимаю, почему в руководстве по YouTube это не go. Учитывая, что я слово в слово следовал руководству (не считая изменений, сделанных для соответствия формату класса), я не понимаю, почему у моего кода возникают проблемы, а не у него. Любая помощь?

class VigenereCipher(object):
    def __init__(self, key, alphabet):
        self.key = key
        self.alphabet = alphabet
        self.letter_to_index = dict(zip(self.alphabet, range(len(self.alphabet))))
        self.index_to_letter = dict(zip(range(len(self.alphabet)),self.alphabet))
    
    def encode(self, text):
        encrypted = ''
        split_message = [text[i:i+len(self.key)] for i in range(0, len(text), len(self.key))]
        for each_split in split_message:
            i = 0
            for letter in each_split:
                number = (self.letter_to_index[letter] + self.letter_to_index[self.key[i]])
                encrypted += self.index_to_letter[number]
                i += 1  
                print (encrypted)
        return encrypted
    
    def decode(self, text):
        decrypted = ''
        split_cipher = [text[i:i+len(self.key)] for i in range(0, len(text), len(self.key))]
        for each_split in split_cipher:
            index = 0
            for letter in each_split:
                number = (self.letter_to_index[letter] - self.letter_to_index[self.key[i]])
                decrypted += self.index_to_letter[number]
                i += 1
        return decrypted

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...