문제1109--암호화 알고리즘 #3

1109: 암호화 알고리즘 #3

실행시간 제한: 1 Sec  메모리사용 제한: 128 MB
제출: 25  통과: 13
[제출] [채점기록] [묻고답하기] [만든사람:]

문제 설명

암호화 #1 (http://113.198.229.224/problem.php?id=1019)과 암호화 #2 (http://113.198.229.224/problem.php?id=1021)을 풀기가 너무 어려웠던 출제자는 저 문제의 출제자도 고생하길 바라며 새로운 암호화 문제를 내기로 다짐했다.

> 비즈네르 암호화 <
먼저 암호문 제작을 위해서 아래의 표와 같은 이른바 '비즈네르 표'를 만들어야 한다.

이 '비즈네르 표'는 원문 알파벳 아래에 26가지 사이퍼 알파벳이 나열되어있다. 사이퍼 알파벳은 한 줄 내려갈 때마다 한 자씩 뒤로 이동하게 되며,1번 줄은 1칸 이동 카이사르 사이퍼(카이사르 암호) 알파벳과 동일하다.

이런 식으로 2번 줄은 2칸 이동,3번 줄은 3칸 이동된 카이사르 사이퍼 알파벳과 같다.

암호문 작성시 한가지 사이퍼 알파벳만 사용하게 되면 보완성이 낮은 카이사르 알파벳과 동일하여 빈도분석법으로 충분히 해독이 가능하게 된다.

이를 보완하기 위해 키워드(열쇠)를 이용한다. 키워드(열쇠)는 수신자와 송신자가 아무 단어나 선택할 수 있다.
암호화 방법은 키워드의 알파벳과 그 원문의 알파벳이 겹치는 부분을 보고 암호문을 작성한다.

암호화된 텍스트를 보면 같은 글자에 대해서 여러가지가 나올 수 있기에 위에서 언급한대로 빈도분석법으로는 해독이 불가능하게 된다.

이 문제에서 1번줄은 A부터 시작한다고 가정한다.
키의 길이가 원문보다 짧을 경우 키를 재사용한다

예시
키워드 : key
원 문 : hello

키워드 k e y k e
원 문 h e l l o
암호문 R I J V S

입력 설명

첫 줄에는 int 범위의 testCase가 등장한다.
두번째 줄에는 key로 사용할 10자 이내의 문자열이 등장한다.
세번쨰 줄에는 암호화 할 500자 이내의 문자열이 등장한다

출력 설명

각 줄에 암호문을 대문자로 출력한다.

입력 예시 Copy

1
key
hello

출력 예시 Copy

RIJVS

도움

키워드와 문자열은 대소문자가 섞여 들어 올 수 있다.