시간 제한
메모리 제한
시간 제한
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 하나만 있는 줄로 끝납니다.
각 인스턴스에 대해 암호화된 평문, 즉 암호문을 한 줄에 출력하세요.
아래의 비제네르 표는 평문 글자(열)와 키 글자(행)를 결합했을 때 나오는 암호문 글자를 보여 줍니다.
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A |
| B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B |
| C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
| D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D |
| E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
| F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F |
| G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
| H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H |
| I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I |
| J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J |
| K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
| L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L |
| M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
| N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
| O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
| Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q |
| R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |
| S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
| T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |
| U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
| V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V |
| W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W |
| X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X |
| Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
| Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
K1 K2 K3 K1 K2 K3 K1 P1 P2 P3 P4 P5 P6 P7---------------------- C1 C2 C3 C4 C5 C6 C7