Vigenère 암호는 기본적으로 키에 따라 여러 시저 암호 중 하나를인가하는 간단한 다중 문자 암호이다. 기본적으로 키의 문자는 사용할 시프트 된 알파벳을 나타냅니다. 이를 위해 Vigenère 광장 이라는 간단한 도구가있었습니다 .
여기서 각 행은 키의 해당 문자로 시작하는 별도의 알파벳입니다. 그런 다음 열은 암호 문자를 결정하는 데 사용됩니다. 암호 해독은 거의 같은 방식으로 작동하며 그 반대의 경우도 마찬가지입니다.
문자열을 암호화하려고한다고 가정하자 CODEGOLF. 우리는 또한 열쇠가 필요합니다. 이 경우 키는이어야한다 FOOBAR. 키가 평문보다 짧은 경우 반복하여 확장하므로 실제 사용하는 키는입니다 FOOBARFO. 이제 F알파벳을 찾는 키의 첫 글자 를 찾습니다. 아마 의심 할 여지없이로 시작합니다 F. 이제 우리는 평문의 첫 글자가있는 열을 찾고 결과 글자는 H입니다. 두 번째 문자는 O키 문자와 일반 텍스트 문자로 표시됩니다 C. 그런 식으로 계속 우리는 마침내 얻는다 HCRFGFQT.
태스크
당신의 임무는 이제 열쇠가 주어진 메시지를 해독하는 것입니다. 그러나 우리는 16 세기를 넘어서서 컴퓨터를 가지고 있기 때문에 최소한 약간 더 큰 알파벳을 지원해야합니다
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Vigenère 광장의 구성은 여전히 매우 동일하며 암호는 여전히 똑같은 방식으로 작동합니다. 여기에 전체를 제공하는 것은 조금 까다 롭습니다.
입력
입력은 표준 입력에서 두 개의 개별 텍스트 줄로 제공되며 각각 줄 바꿈으로 종료됩니다. 첫 번째 줄에는 키가 있고 두 번째 줄에는 암호문이 있습니다.
산출
해독 된 메시지를 포함하는 단일 행.
승리 조건
암호화는 때때로 무기로 간주되기 때문에 밀수를 쉽게하기 위해 코드가 짧아야합니다. 발견 가능성을 줄이므로 짧을수록 좋습니다.
샘플 입력 1
Key
miQ2eEO
샘플 출력 1
Message
샘플 입력 2
ThisIsAKey
CoqKuGRUw29BiDTQmOpJFpBzlMMLiPb8alGruFbu
샘플 출력 2
ThisWorksEquallyWellWithNumbers123894576
일주일이 지났습니다. 현재 가장 짧은 솔루션이 승인되었습니다. 컨테스트에 관심이있는 분들을 위해 다음과 같은 제출 및 길이가있었습니다.
130 – Python
146 – Haskell
195 – C
197 – C
267 – VB.NET
그리고 다른 솔루션과 비교되지 않은 자체 솔루션 :
108 – Ruby
139 – PowerShell