Шифрование Виженера
Один из самых старых и распространенных алгоритмов шифрования - шифр Виженера. Это довольно старая штука - подобное шифрование было впервые описано в 1553 году Джованом Баттистой Белласо и улучшено в 1586 году Блезом де Виженером.
Шифр Виженера каждую букву открытого текста преобразовывает в одну букву зашифрованного текста, комбинируя одну букву открытого текста с одной буквой ключа в соответствующей позиции. Если ключ короче открытого текста, он просто повторяется при необходимости, например, для ключа длины 3 и открытого текста длины 7 буквы будут объединены следующим образом (k[i]
- это ключевая буква, p[i]
- это текстовая буква, и c[i]
- полученная буква зашифрованного текста).
Буква ключа указывает, на сколько позиций буква текста должна быть "сдвинута вперед"» в алфавите. Если ключевая буква A, соответствующая буква открытого текста будет смещена на один символ, B - на две позиции и так далее. Алфавит считается круглым, поэтому за последней буквой (Z) идет A. Обратите внимание, что A (ключ) в сочетании с другим A (открытым текстом) приведет к B, что может быть немного необычно для обычного шифра Виженера. Квадрат Виженера в конце условия задачи дает общее представление о том, как буквы открытого текста объединяются с буквами ключа для создания зашифрованного текста.
Ваша задача - написать программу, которая будет шифровать сообщения с использованием шифра Виженера с заданным ключом.
Входные данные
Содержит несколько тестов. Каждый тест состоит из двух строк, первая строка - это ключ шифрования, а вторая - открытый текст. Ключ и открытый текст состоят из заглавных букв английского алфавита {A, B, C, ..., Z}. Длина ключа находится между 1 и 1000, длина открытого текста между 1 и 10^5
включительно.
Входные данные завершаются строкой, содержащей один ноль.
Выходные данные
Для каждого теста выведите зашифрованную версию сообщения.