E D R , A S I H C RSS

Crypt Kicker


인기도:B(A,B,C), 성공률:낮음(낮음,보통,높음), 레벨:2(1~4)

About CryptKicker

텍스트를 암호화하는 방법 중에 보안상 취약하긴 하지만 흔하게 쓰는 방법으로 알파벳 글자를 다른 글자로 돌리는 방법 있다. 즉 알파벳의 각 글자를 다른 글자로 치환한다. 암호화된 것을 다시 원래대로 되돌릴 수 있으려면 두 개의 서로 다른 글자가 같은 글자로 치환되지 않아야 한다.

암호화된 텍스트가 한 줄 상 입력되는데, 각 줄마다 서로 다른 치환 방법 적용된다고 가정하자. 암호화 전의 텍스트에 있는 단어는 모두 주어진 사전에 들어있는 단어라고 가정하고, 암호화된 텍스트를 해독하여 원래 텍스트를 알아내자.

Input

입력은 한 개의 정수 n 들어있는 행으로 시작되며 그 다음 줄부터는 한 줄에 하나씩 n개의 소문자로 쓰인 단어들 알파벳 순으로 입력된다. n개의 단어들은 복호화된 텍스트에 들어갈 수 있는 단어로 구성된 사전다. 사전 뒤에는 몇 줄의 텍스트가 입력된다. 각 줄은 앞에서 설명했던 방법에 따라 암호화된다.

사전에 들어갈 수 있는 단어의 개수는 1,000개를 넘지 않는다. 단어의 길는 16글자를 넘지 않는다. 암호화된 텍스트에는 소문자와 스페스만 들어가며 한 줄의 길는 80글자를 넘어가지 않는다.

output

각 줄을 복호화하여 표준 출력으로 출력한다. 여러 문장으로 복호화될 수 있다면 그 중 아무 결과나 출력하면 된다. 가능한 풀가 없다면 알파벳 모든 문자를 아스테리스크(*)로 바꾸면 된다.

Sample Input

~cpp 
6
and
dick
jane
puff
spot
yertle
bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn
xxxx yyy zzzz www yyyy aaa bbbb ccc dddddd

Sample Output

~cpp 
dick and jane and puff and spot and yertle
**** *** **** *** **** *** **** *** ******

작성자 사용언어 개발시간 코드

쓰레드

런 종류의 암호화를 단일환자치환법, 또는 단일환자방식의 암호화 라고 합니다. 호의세계 라는 책에서 방법에 대해서 자세히 풀어 놓았었는데;; 하하하 책 헛읽었군요;; 걸 보니 더블릿랑 비슷한듯. - 승한

단일환자방식의 암호의 기본적인 풀
단일환자 방식은 암호화 방식중에서도 기초적고 풀기도 쉬운 방식다. 복호화된 한줄의 원본 문장만 가지고 있어도 거의 모든 암호를 풀어내 버릴수 있기 때문다.
하지만 복호화된 문장 없다면?? 그럴때에도 풀 있다.
영어는 26글자의 알파벳으로 루어져있다. 단순히 짜맞추기엔 너무 많은 갯수다. 하지만 그것들의 출현빈도는 각각다르다. z, q와 같은 글자는 1%미만의 출현비율 나타나고,
e, i, o 와 같은 글자는 알파벳의 특성상 10퍼센트가 넘는 출현빈도가 나타난다. 기억나기론 E가 13퍼센트 정도였던것 같다. 규칙을 따르지 않는 문장과 단어가 있지 않나고 반박할지 모르지만 확률다. 특수화된 경우의 문장과, 단어의 경우를 일반화 시키면 곤란하다. 런 알파벳의 출현빈도는 몇줄의, 몇개의 단어에는 잘 맞지 않을테지만, 암호화된 문장과 문서가 많아질수록 그 출현빈도는 표중화된 확률에 거의 일치하게 된다.
또 gh, ing, ed, the, a 와같은 자주출현하는 글자쌍도 존재한다. 만약 암호화된 코드에 덩그라니 한글자짜리 x 가 존재한다면 그것은 a일 가능성 높아진다. 또 qer가 있따면 것은 the가 될 확률 높아지는것고.
와같 꽤 많은 문서와 문장의 알파벳의 출현빈도와, 특정한 글자쌍을 추측 하다보면 어느순간 복호화가 완성되어진다.

단일환자 치환법의 치명적 약점 또한가지 존재하는데 는 송신자와, 수신자 에게 적어도 한개의 법칙 필요하다는 것다. (럴땐 pangram 유용하게 쓰였을것다)
송수신가자 모두 가진 무언가 공통의 법칙 필요했을것고, 그렇게 되면 보안상의 문제가 발생하게 되는것다. 직접 만나서 건낼 수 있다면 좋지만, 직접 만날거면 뭣하러 암호화된 문장을 사용하겠는가. 아무튼 암호화 규칙 노출되지 않게 하기위해서는 상당한 노력 필요했을것다.
단일환자치환법은 조금 허접해 보일지 모르지만 결코 방식을 무시할수 없는 유는 거의 모든 암호화 방식 방법을 활용하고, 변형한 방식기 때문다.
독일의 아나그램도 단일환자 방식을 개량하여 빈도수의 특성을 희석시킨 방식다. (뭐 아나그램에는 다른 법칙들도 많지만 어렵다. 해못했다.) - 승한

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:03
Processing time 0.0232 sec