Ключ в моем Vigenere Cipher не зашифровывается так, как должно Python 3 - PullRequest
0 голосов
/ 10 марта 2019

Я очень новичок в кодировании, и этот Vigenere Cipher Я пишу не совсем правильно шифрует.
Он перебирает первые несколько букв в порядке, но затем не двигается дальше.
Я уверен, что это как-то связано с областью alphabet_position(key[char % len(key)]).
Первые 3 зашифрованных письма верны, а остальные отключены.

import string
"""Creating a function that uses a string to encrypt a message"""

def alphabet_position(letter):
    char = ''
    if letter.isalpha():
        if letter == letter.lower():
             num = (ord(letter) - 97) % 26
             return num 
        if letter == letter.upper():
             num = (ord(letter) - 65) % 26
             return num
        elif letter != letter.isalpha():
             char += letter
             return char

def rotate_character(char,rot):
    character = ''
    if char.isalpha() == False:
        char += character
        return char
    else:  
        rot = alphabet_position(char) + rot
        if rot >= 26:
            rot -= 26
        if char == char.upper():
            rot += 65
        if char == char.lower():
            rot += 97
        return chr(rot)  
def encrypt_key(text,key):
    char = 0 
    mess = ''


    for letter in  range (len(text)):

        letter = text[letter]
        pos = alphabet_position(key[char%len(key)])

        mess += rotate_character(letter,pos)
        char += 1
    return mess 

def main():

    print(encrypt_key("The crow flies at midnight!","boom"))

if __name__ == "__main__":
     main()
...