본문 바로가기
보안/Wechall

Wechall - Training: Crypto - Caesar I (Crypto, Training)

by 꾸적꾸적 2024. 7. 29.

 

https://www.wechall.net/challenge/training/crypto/caesar/index.php

 

 

카이사르 암호화 기법에 관한 문제이다.

 

암호학을 공부하면 가장 먼저 배우는 것들중 하나인데,

카이사르 암호화는 

 

A + key(mod26)

 

방식으로 구현된다.

 

이게 무슨말이냐면,

key 값을 몇을 주냐에 따라 알파벳 위치를 바꾸는 것이다.

 

예를 들자면, key가 5고, 평문이 HAPPY 라고한다면,

ABCDE

FGHIJ

KLMNO

PQRST

UVWXY

Z

라는 알파벳 26개중에, H에서 뒤로 5번을 이동한 M이 암호문의 시작이다.


H -> M

A -> F

P -> U

P -> U

Y -> D

 

즉, 평문 HAPPY, key 5일 경우, 암호문은 MFUUD가 된다.

 

하지만 지금 문제에서는 key값이 나오지 않았기 때문에, 모든 경우의 수(알파벳 수)를 확인하는 수 밖에 없다.

그렇기에 우리는 간단한 코드를 작성해 확인해보자.

 

ciphertext = "XLI UYMGO FVSAR JSB NYQTW SZIV XLI PEDC HSK SJ GEIWEV ERH CSYV YRMUYI WSPYXMSR MW EKEVSQHMFWLR"

for key in range(26):
    c = list(ciphertext)
    for i in range(len(c)):
        c[i] = chr((ord(c[i]) - ord('A') + key)%26 + ord('A'))
    plain = ''.join(c)
    print(plain)
    print()

 

ciphertext를 변수로 받고, key 값을 총 26번 바꿔가면서 모든 경우의 값을 가져오는것이다.

 

그러면 아래와 같이 결과가 나오는데...

 

맨 밑에서 네번째를 보면 아래와 같은 값이 나온다.

 

THEPQUICKPBROWNPFOXPJUMPSPOVERPTHEPLAZYPDOGPOFPCAESARPANDPYOURPUNIQUEPSOLUTIONPISPAGAROMDIBSHN

 

잘보면 THEPQUICK ... 으로 보이는데, P를 빼면 THE QUICK이라고 적히니, P를 빼고 읽어보자.

 

THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG OF CAESAR
AND YOUR UNIQUE SOLUTION IS AGAROMDIBSHN

 

뭐라 이상한 말들이 많은데, 우리는 마지막줄만 보면된다.

그래서 답은 AGAROMDIBSHN.

댓글