字符串索引超出范围,Vigenere 密码
String Index Out Of Range, Vigenere Cipher
我正在努力实施维吉尼亚密码。我收到错误:
IndexError: string out of range
import sys
# Get the message and key
message = (sys.argv[1]).lower()
key = (sys.argv[2]).lower()
# Open file
f = open('Cipher.txt', 'w')
for i in range(len(message)):
if i > len(key):
j = i % len(key)
f.write(str(ord(message[i]) + ord(key[j]) % 26 + ord('a')))
else:
f.write(str(ord(message[i]) + ord(key[i]) % 26 + ord('a')))
f.close()
我会在 f.write(str(ord(message[i]) + ord(key[i]) % 26 + ord('a')))
之后上线。我知道我的 key
可能比 message
的长度短,所以我在它前面打了个勾。例如,如果我的密钥是 test
并且我已经到达第 5 个字符,我将返回到 test
中的 t
。
如果i == len(key)
,返回的值将是i
。
替换
if i > len(key):
j = i % len(key)
f.write(str(ord(message[i]) + ord(key[j]) % 26 + ord('a')))
else:
f.write(str(ord(message[i]) + ord(key[i]) % 26 + ord('a')))
与:
a = ord('a')
...
j = i % (len(key) - 1)
f.write(str((ord(message[i])-a + ord(key[j])-a) % 26 + a))
我正在努力实施维吉尼亚密码。我收到错误:
IndexError: string out of range
import sys
# Get the message and key
message = (sys.argv[1]).lower()
key = (sys.argv[2]).lower()
# Open file
f = open('Cipher.txt', 'w')
for i in range(len(message)):
if i > len(key):
j = i % len(key)
f.write(str(ord(message[i]) + ord(key[j]) % 26 + ord('a')))
else:
f.write(str(ord(message[i]) + ord(key[i]) % 26 + ord('a')))
f.close()
我会在 f.write(str(ord(message[i]) + ord(key[i]) % 26 + ord('a')))
之后上线。我知道我的 key
可能比 message
的长度短,所以我在它前面打了个勾。例如,如果我的密钥是 test
并且我已经到达第 5 个字符,我将返回到 test
中的 t
。
如果i == len(key)
,返回的值将是i
。
替换
if i > len(key):
j = i % len(key)
f.write(str(ord(message[i]) + ord(key[j]) % 26 + ord('a')))
else:
f.write(str(ord(message[i]) + ord(key[i]) % 26 + ord('a')))
与:
a = ord('a')
...
j = i % (len(key) - 1)
f.write(str((ord(message[i])-a + ord(key[j])-a) % 26 + a))