Шифровальщик · Шаг 1 из 4
Шифр Виженера
Клуб городских квестов шифрует записки с заданиями. Цезарь — сдвиг всех букв на одно и то же число — команды взламывают за минуту. Поэтому записки шифруют по-виженеровски: у каждой буквы свой сдвиг, а сдвиги по кругу берутся из слова-ключа.
Что сделать
Зашифруйте текст ключом по Виженеру — или расшифруйте, если попросили.
Что приходит
tekst— текст записки: русские буквы любого регистра, пробелы, знаки, цифрыklyuch— слово-ключ из русских букв, регистр не важенrasshifrovat—True, если текст надо расшифровать; по умолчаниюFalse
Что вернуть
Строку той же длины: буквы сдвинуты по ключу, регистр сохранён, всё остальное — как было.
Допишите функцию vizhener в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Утилита зовёт vizhener на команды «зашифровать» и «расшифровать», а после взлома — чтобы прочитать шифровку найденным ключом. Решите шаг — и записки начнут шифроваться.
Ключ «ключ» даёт сдвиги 11, 12, 31, 24 — номера его букв в алфавите с нуля. «п» сдвигается на 11 и становится «ъ», «р» на 12 — «ь», «и» на 31 — «ж», «в» на 24 — «щ», а потом ключ идёт по кругу: «е» снова на 11 — «п», «т» на 12 — «ю».
vizhener("привет", "ключ")
'ъьжщпю'
Алфавит — 33 буквы: абвгдеёжзийклмнопрстуфхцчшщъыьэюя, «ё» стоит после «е». Номер буквы — её место в алфавите с нуля: «а» — 0, «я» — 32.
Сдвиги берутся из ключа: номер его первой буквы, второй и так далее, а когда ключ кончился — снова с первой. Каждая буква текста сдвигается вперёд по алфавиту на очередной сдвиг; за «я» снова идёт «а». Заглавная буква остаётся заглавной.
Всё, что не русская буква (пробелы, знаки, цифры, латиница), остаётся на месте и не тратит буквы ключа: очередной сдвиг достаётся следующей русской букве.
Если rasshifrovat — True, буквы сдвигаются на те же величины назад: расшифровка возвращает исходный текст.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.