所以我的老师发明了这个vigenere密码他说它起作用了。然而,在用在线病毒密码检查其结果后,它似乎没有得到正确的加密。
我不知道如何修复它,我想知道是否有人能指导我的错误,并告诉我如何纠正它们。
这是代码
base = ord("a")
alphabets = 'abcdefghijklmnopqrstuvwxyz'
keyword = input('What is your keyword')
message = input('What is your message to be coded or encoded?').lower()
expandedKeyword = ""
while len(expandedKeyword) < len(message):
for i in keyword:
if len(expandedKeyword) < len(message):
expandedKeyword += i
cipheredMessage = ''
indexofKeyword = 0
for i in message:
if i == ' ':
cipheredMessage = cipheredMessage + " "
else:
shiftedIndex = (ord(i) + ord(expandedKeyword[indexofKeyword])-base) % 26 +base
cipheredMessage = cipheredMessage + chr(shiftedIndex)
indexofKeyword = indexofKeyword + 1
print(cipheredMessage)我理解正在发生的事情的概念,但我似乎找不出错误。
发布于 2015-08-20 18:57:38
计算shiftedIndex是错误的,您需要减去base两次,但目前只减去一次。例子-
shiftedIndex = (ord(i) + ord(expandedKeyword[indexofKeyword])-2*base) % 26 +base这是因为您需要第一次从base中减去ord(i)以获得I的索引(从'a'),第二次从ord(expandedKeyword[indexofKeyword])中获得该字符的索引(从'a' )。所以看起来应该是(为了更好的理解)-
shiftedIndex = ((ord(i) - base) + (ord(expandedKeyword[indexofKeyword])-base)) % 26 + basehttps://stackoverflow.com/questions/32126091
复制相似问题