def vigenere_decrypt(ciphertext, keyword):
keyword = keyword.upper()
plaintext = ""
key_index = 0
for char in ciphertext:
if char.isalpha():
key = ord(keyword[key_index % len(keyword)]) - ord('А')
if char.isupper():
offset = ord('А')
else:
offset = ord('а')
decrypted_char = chr(((ord(char) - offset - key) % 32) + offset)
plaintext += decrypted_char
key_index += 1
else:
plaintext += char
return plaintext
ciphertext = "ЯЁЖ – РХПК В ШЕЪАФТЩЙ ВНЛИБН. ЩББЕТУХЧЬЯ ЮЕ КЛГЕП ПБН ЬЛЩДШИЩ ЁУИ Щ ПКТДТУ. ДЬНША ЯЁУ – ТБН ЭЫВДВИ ИЙЬТМЦЩТ АДЭЬФЙЬЯГ ПЧ. В ДЦЭЬХ УЛРРМЮЕГ УЛСЫШИ ГДЁЮ И ТФКДРЙЭ В ЫЕЫСЫУП МЯХП. НХТБЫ, ЯЁУТРГДИХ Ж ШИШУМЬПЪ ЫЕЫН, ШАШАМАЬН ПЁ ВЕЦЯ-ПС, ВТЯ УТНРЬКЕГ «СЁСЯЖКЯ БЙХА». ЁЕШТЛ Н ЧАЮЦУ ДРРУ ЕЪ ТКЗТЕШИХ ЕЬ – «БЯРЖШРД ЫЕЫЕ», ЬЕЬБХУАА ТВРРУ РХПЮ КТЕФ, ЕЭЙ, ХУРО. ЗТЩ ТКЗТЕШИП УТНРЬКЛЩ – «ПЫУАТКЯ БЙХА»."
keyword = "PYTHON"
decrypted_text = vigenere_decrypt(ciphertext, keyword)
print(decrypted_text)
Подобрав ключевое слово