【发布时间】:2021-09-02 06:54:28
【问题描述】:
我正在尝试创建一个具有以下功能的 vignere 密码类 加密和解密,vignere ciphers。 但是我的代码返回了错误的字符,我想知道是否有人 可以帮助我确定我的问题。
class Vignere():
def __init__(self):
self.alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
self.enc_key = input("Please enter encription word: ")
def vignere_encrypt(self, user_message):
ex_key = self.enc_key
ex_key_len = len(ex_key)
user_len = len(user_message)
cipher = ''
self.enc_key.upper()
while ex_key_len < user_len:
ex_key = ex_key + self.enc_key
ex_key_len = len(ex_key)
key_pos = 0
for letter in user_message.upper():
if letter in self.alphabet:
pos = self.alphabet.find(letter)
key_char = ex_key[key_pos]
key_char_pos = self.alphabet.find(key_char)
key_pos = key_pos + 1
new_pos = pos + key_char_pos
if new_pos > 26:
new_pos= new_pos - 26
new_char = self.alphabet[new_pos]
cipher = cipher + new_char
else:
cipher = cipher + letter
return cipher
def vignere_decipher(self, user_message):
ex_key = self.enc_key
ex_key_len = len(ex_key)
user_len = len(user_message)
cipher = ''
self.enc_key.upper()
while ex_key_len < user_len:
ex_key = ex_key + self.enc_key
ex_key_len = len(ex_key)
key_pos = 0
for letter in user_message.upper():
if letter in self.alphabet:
pos = self.alphabet.find(letter)
key_char = ex_key[key_pos]
key_char_pos = self.alphabet.find(key_char)
key_pos = key_pos + 1
new_pos = pos + key_char_pos
if new_pos > 26:
new_pos= new_pos + 26
new_char = self.alphabet[new_pos]
cipher = cipher + new_char
else:
cipher = cipher + letter
return cipher
任何关于为什么会发生这种情况的见解将不胜感激。
【问题讨论】:
-
任何有关输入、输出和您期望的示例?
-
例如,加密词的输入是“shift”,要加密的词是“car”,我想要的输出是 UHZ。但是我得到了 BZQ。
-
您尝试过如何调试此代码?
标签: python function class encryption return