비제네르 암호화

시간 제한1초메모리 제한128 MB

문제

비제네르 암호는 가장 오래되고 널리 알려진 암호화 방식 중 하나입니다. 비슷한 방식이 1553년 조반 바티스타 벨라소(Giovan Battista Bellaso)에 의해 처음 기술되었고, 1586년 블레즈 드 비제네르(Blaise de Vigenère)에 의해 개선되었습니다.

이 암호는 평문의 각 글자를 같은 위치에 있는 키 글자와 결합하여, 평문 한 글자마다 암호문 한 글자를 만들어 냅니다. 키가 평문보다 짧으면 필요한 만큼 키를 반복해서 사용합니다. 예를 들어 길이가 3인 키와 길이가 7인 평문은 다음과 같이 결합됩니다. (Ki는 키 글자, Pi는 평문 글자, Ci는 결과 암호문 글자입니다.)

 K1 K2 K3 K1 K2 K3 K1
 P1 P2 P3 P4 P5 P6 P7
----------------------
 C1 C2 C3 C4 C5 C6 C7

각 키 글자는 평문 글자를 알파벳에서 몇 칸 ‘앞으로 이동’시킬지를 나타냅니다. 키 글자가 A이면 한 칸, B이면 두 칸 이동하는 식입니다. 알파벳은 원형으로 취급하므로 Z를 넘어가면 다시 A로 돌아옵니다. 키 A와 평문 A를 결합하면 B가 되며, 이는 일반적인 비제네르 암호와는 조금 다릅니다. 즉, 암호문 글자는 (평문 + 키 + 1)을 26으로 나눈 나머지입니다(A = 0). 힌트에 있는 비제네르 표는 평문 글자와 키 글자의 모든 조합을 보여 줍니다.

주어진 키로 메시지를 비제네르 암호로 암호화하는 프로그램을 작성하세요.

입력

입력은 여러 개의 테스트 인스턴스로 이루어집니다. 각 인스턴스는 두 줄로 구성되며, 첫 번째 줄은 암호화 키, 두 번째 줄은 평문입니다. 키와 평문은 모두 영어 대문자(A–Z)로만 이루어집니다. 키의 길이는 1 이상 1000 이하, 평문의 길이는 1 이상 100000 이하입니다.

입력은 0 하나만 있는 줄로 끝납니다.

출력

각 인스턴스에 대해 암호화된 평문, 즉 암호문을 한 줄에 출력하세요.

힌트

아래의 비제네르 표는 평문 글자(열)와 키 글자(행)를 결합했을 때 나오는 암호문 글자를 보여 줍니다.

ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZA
BCDEFGHIJKLMNOPQRSTUVWXYZAB
CDEFGHIJKLMNOPQRSTUVWXYZABC
DEFGHIJKLMNOPQRSTUVWXYZABCD
EFGHIJKLMNOPQRSTUVWXYZABCDE
FGHIJKLMNOPQRSTUVWXYZABCDEF
GHIJKLMNOPQRSTUVWXYZABCDEFG
HIJKLMNOPQRSTUVWXYZABCDEFGH
IJKLMNOPQRSTUVWXYZABCDEFGHI
JKLMNOPQRSTUVWXYZABCDEFGHIJ
KLMNOPQRSTUVWXYZABCDEFGHIJK
LMNOPQRSTUVWXYZABCDEFGHIJKL
MNOPQRSTUVWXYZABCDEFGHIJKLM
NOPQRSTUVWXYZABCDEFGHIJKLMN
OPQRSTUVWXYZABCDEFGHIJKLMNO
PQRSTUVWXYZABCDEFGHIJKLMNOP
QRSTUVWXYZABCDEFGHIJKLMNOPQ
RSTUVWXYZABCDEFGHIJKLMNOPQR
STUVWXYZABCDEFGHIJKLMNOPQRS
TUVWXYZABCDEFGHIJKLMNOPQRST
UVWXYZABCDEFGHIJKLMNOPQRSTU
VWXYZABCDEFGHIJKLMNOPQRSTUV
WXYZABCDEFGHIJKLMNOPQRSTUVW
XYZABCDEFGHIJKLMNOPQRSTUVWX
YZABCDEFGHIJKLMNOPQRSTUVWXY
ZABCDEFGHIJKLMNOPQRSTUVWXYZ