Вы так и будете бегать с форума на форум, с каждой новой ошибкой в своей программе?
Вчера я вам подсказал, в чем у вас ошибка, сегодня вы не справились со следующей. Пора бы научиться самому искать ошибки в своих скриптах, а не жить на подсказках.
Так вы никогда программирование не осилите.
Я уже не говорю о том, шифруя сообщения и создавая одновременно ключ для расшифровки - вы должны их оба передавать читателю. Причем, ключ той-же длины, что и само сообщение. Круто! Ладно, сообщение отправили по e-mail. А ключ как будете передавать - голубиной почтой или курьером? Это фундаментальная ошибка.
А техническая - вы так и не разобрались, где и что у вас индексируется.
Вот вам пища для размышления - решение вашей задачи (в той постановке, какую вы задали). Попробуйте разобраться сами что и как тут работает.
def encrypt(msg):
key = []
new_msg = []
alphabet = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !?.,")
ind = 0
while True:
rannd = random.randint(0, 52)
key.append(rannd)
ab_temp = alphabet[rannd:] + alphabet[:rannd]
new_msg.append(ab_temp[alphabet.index(msg[ind])])
ind += 1
if ind >= len(list(msg)):
break
print("Зашифрованное сообщение:")
print(new_msg)
print('Ключ:')
print(key)
def decipher(msg, key):
alphabet = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !?.,")
ind = 0
new_msg = []
while True:
ab_temp = alphabet[key[ind]:] + alphabet[:key[ind]]
new_msg.append(alphabet[ab_temp.index(msg[ind])])
ind += 1
if ind >= len(list(msg)):
break
print("Исходное сообщение:")
print(new_msg)
Шифруем:
encrypt('Hello world')
Зашифрованное сообщение:
['X', 'K', 'w', 'M', 'M', 'f', 'n', 'w', 'j', 'O', 'T']
Ключ:
[16, 32, 11, 27, 24, 10, 48, 8, 49, 29, 42]
Расшифровываем:
decipher(['X', 'K', 'w', 'M', 'M', 'f', 'n', 'w', 'j', 'O', 'T'], [16, 32, 11, 27, 24, 10, 48, 8, 49, 29, 42])
Исходное сообщение:
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']