Написал код для нахождения ключа в Шифре Вижинера, но выводит такую ошибку:
a = (text_char_code[i] - chiper_char_code[i]) % len(alpha1)
~~~~~~~~~~~~~~^^^
TypeError: 'int' object is not subscriptable
Как с этим можно справиться? Перепробовал несколько вариантов с присвоением типа переменной, но почему-то не выходит.
Вот исходный код:
alpha1 = list('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')
text = 'имитостойкость'
cipher_text = 'щхыяяъеыъубюге'
key = " "
def get_key(text_char: str, i, cipher_char: str, alpha: list[str]) -> str:
if text_char not in alpha1: # Находит незнакомый символ и оставляет как есть
return text_char
text_char_code = alpha1.index(text_char) # Находит символ открытого текста
chiper_char_code = alpha1.index(cipher_char) # Находит символ зашифрованного текста
for i in text_char:
global a
a = (text_char_code[i] - chiper_char_code[i]) % len(alpha1) # Находит ключ
for i in range(len(text)):
key = key + str(get_key(text[i], i, cipher_text[i], alpha= alpha1)) #сохраняет ключ
print(key)