TGViewer
🐍 PythonGuru — работа и стажировки для программистов 🐍 PythonGuru — работа и стажировки для программистов @gurupython · 3.89K subscribers
Post #279 4.9K
​​Задача - Vigenère Cipher Helper

Шифр Виженера - это классический шифр, первоначально разработанный итальянским криптографом Джован Баттиста Беллазо и опубликованный в 1553 году. Он назван в честь более позднего французского криптографа Блеза де Виженера, который разработал более сильный автоключ шифр (шифр, который включает сообщение текста в ключ).
Шифр легко понять и реализовать, но он пережил три столетия попыток его взлома, за что получил прозвище «le chiffre unéchiffrable» или «неразборчивый шифр».
Из Википедии: Шифр Виженера - это метод шифрования буквенного текста с использованием ряда различных шифров Цезаря на основе букв ключевого слова. Это простая форма полиалфавитной замены.

В шифре Цезаря каждая буква алфавита сдвигается на некоторое количество мест; например, в Caesar шифра сдвига 3, Aстал бы D, Bстал бы E, Yстал бы Bи так далее. Шифр Виженера состоит из нескольких последовательных шифров Цезаря с разными значениями сдвига.
Предположим, что клавиша повторяется на протяжении всего текста, символ за символом. Обратите внимание, что в некоторых реализациях клавиша повторяется над символами, только если они являются частью алфавита - в данном случае это не так.
Сдвиг получается путем применения сдвига Цезаря к символу с соответствующим индексом ключа в алфавите.

Визуальное представление:
"my secret code i want to secure" // сообщение
"passwordpasswordpasswordpasswor" // ключ
Напишите класс, который при задании ключа и алфавита можно использовать для кодирования и декодирования из шифра.

Пример
var alphabet = 'abcdefghijklmnopqrstuvwxyz';
var key = 'password';
// создает помощник шифра с заменой каждой буквы
// соответствующим символом в ключе
c.encode('codewars'); // выведет 'rovwsoiv'
c.decode('laxxhsj'); // выведет 'waffles'

Любой символ, не входящий в алфавит, необходимо оставить как есть. Например (в верхнем регистре):
c.encode('CODEWARS'); // выведет 'CODEWARS'
More from @gurupython
  1. Aug 7, 2026Клиенты просят больше, а дедлайны не растягиваются Пост, обложка, карусель, сценарий, рилс…
  2. Dec 2, 2025Бизнес-аналитик LMS Куда: Университет Синергия Сколько денег: 280к на руки Подробное описа…
  3. Nov 22, 2025​​Python AI: как построить нейронную сеть и делать прогнозы Проще говоря, цель использован…
  4. Feb 10, 2025Digital-агентство SNP Technology, ищут Java-разработчика Junior Digital-агентство SNP Tech…
  5. Feb 6, 2025​​ Где найти лучшую работу для талантливой молодежи? Молдова, Казахстан, Армения, Беларусь…
  6. Feb 5, 2025SNP Technology, ищут Java-разработчика Digital-агентство SNP Technology — создаем современ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →