Python, 仿射密码

Python, Affine Cipher

下午好,

(我是初级程序员)

我在 Python 中遇到了一个小问题。我正在尝试用 GUI 编写一个程序,它有 4 个用户输入。第一个输入是键 a,第二个是键 b,第三个是 encrypt 的文本,第四个是 decrypt 的文本。加密程序使用 Affine Cipher.

我将通过示例向您展示我的问题:用户输入键 a 作为 1,键 b 作为 3 并且 text for encrypt 输入字母 D。控制台上的程序输出将是字母 G,这很好,但是当用户输入更多字母如 DE 或一些单词时,将会出现一个错误,显示 'DE' is not in list 如果我尝试将用户输入放入列表,它会说同样的事情,但这次,错误会说 'D' 'E' is not in list 甚至不能只加密一个字母。

所以问题是程序可以将用户输入的一个字母与字母表进行比较并获取该字母的索引并对其进行加密但是当有更多字母时它不能。感谢您的帮助!

def Encrypt_Input (input,key_a,key_b):
            input = self.User_Input.upper()
            No_Diacritic = unidecode.unidecode(input)
            alphabet = list(string.ascii_uppercase)
            input_index = alphabet.index(No_Diacritic)
            Encryption = ((int(self.key_a)*input_index)+int(self.key_b))%26
            Encrypted = alphabet[Encyption]
            print(Encrypted)
            return Encrypted

您可以使用包装函数逐个字母地迭代文本(通过使用 for 循环),并且对于每个字母,它使用您的函数并连接输出。