카이사르 암호란
카이사르 암호(시저 암호)는 각 글자를 알파벳에서 정해진 칸 수만큼 뒤에 있는 글자로 바꾸는 방식입니다. 이동 값이 3이면 A는 D, B는 E가 되는 식입니다. 알파벳 끝에서는 처음으로 돌아가므로 X는 A, Y는 B, Z는 C가 됩니다.
이름은 율리우스 카이사르에서 왔습니다. 로마의 역사가 수에토니우스에 따르면 카이사르는 사적인 편지에 3칸 이동을 썼습니다. 알려진 암호 가운데 가장 오래된 것 중 하나이며, 지금도 대부분의 사람이 가장 먼저 배우는 암호입니다.
이동 값이 곧 키입니다. 키를 아는 사람은 같은 칸 수만큼 거꾸로 밀어 메시지를 되돌릴 수 있습니다.
도구 사용 방법
암호화. 평문에 메시지를 입력합니다. 입력하는 동안 암호문에 암호화된 결과가 나타납니다.
복호화. 암호화된 메시지를 암호문에 붙여넣습니다. 평문에 읽을 수 있는 결과가 나타납니다.
키 바꾸기. 이동 칸 수 슬라이더를 끌거나, 빼기와 더하기 버튼으로 한 칸씩 조정합니다. 마지막으로 입력한 입력란은 그대로 두고 다른 입력란이 바뀝니다.
키를 모르는 메시지 해독. 메시지를 암호문에 붙여넣고 암호문의 25가지 이동 결과 목록을 보세요. 가능한 답이 모두 나옵니다. 가장 영어다운 결과에는 영어일 가능성 높음 표시가 붙습니다. 줄 옆의 번호 버튼을 누르면 슬라이더가 그 이동 값으로 맞춰집니다.
각 입력란 위의 복사를 누르면 텍스트가 복사되고, 지우기를 누르면 처음부터 다시 시작합니다.
예시
아래 결과는 이 페이지의 암호 도구로 만든 것입니다.
| 평문 | 이동 칸 수 | 암호문 |
|---|---|---|
| Hello, World! | 3 | Khoor, Zruog! |
| Hello, World! | 7 | Olssv, Dvysk! |
| Meet me at the old oak tree | 3 | Phhw ph dw wkh rog rdn wuhh |
| ATTACK AT DAWN | 13 | NGGNPX NG QNJA |
| Zebra crossing | 1 | Afcsb dspttjoh |
| The quick brown fox | 23 | Qeb nrfzh yoltk clu |
| 카이사르 Caesar | 3 | 카이사르 Fdhvdu |
23칸 이동은 거꾸로 3칸 이동한 것과 같습니다. 그래서 “The”가 “Qeb”가 됩니다. 마지막 줄처럼 한글은 바뀌지 않고 영어 알파벳 26자만 이동합니다.
Phhw ph dw wkh rog rdn wuhh의 전수 조사 목록 앞부분은 다음과 같습니다.
| 시도한 이동 값 | 결과 |
|---|---|
| 1 | Oggv og cv vjg qnf qcm vtgg |
| 2 | Nffu nf bu uif pme pbl usff |
| 3 | Meet me at the old oak tree |
| 4 | Ldds ld zs sgd nkc nzj sqdd |
도구는 3칸 이동을 영어일 가능성이 가장 높은 결과로 표시합니다.
작동 원리
각 글자를 0부터 25까지의 숫자로 바꿉니다. 여기에 이동 값을 더하고, 25를 넘으면 다시 0부터 셉니다. x를 글자의 위치, n을 이동 값으로 두고 식으로 쓰면 다음과 같습니다.
- 암호화: (x + n) mod 26
- 복호화: (x - n) mod 26
가장 가능성 높은 이동 값을 고르기 위해 도구는 후보 25개에서 각 글자가 몇 번 나오는지 세고, 그 수를 일반적인 영어 글자 빈도와 비교합니다. 영어에서는 E, T, A가 흔하고 Q, X, Z는 드뭅니다. 이 패턴에 가장 잘 맞는 후보에 표시가 붙습니다. 한 문장 이상이면 잘 맞지만, 단어 하나처럼 아주 짧은 메시지는 여러 이동 값에서 실제 단어가 나올 수 있으니 목록을 직접 확인하세요. 이 판단은 영어 빈도를 기준으로 하므로 영어가 아닌 언어로 쓴 메시지에는 잘 맞지 않습니다.
한계와 보안
카이사르 암호는 진짜 암호화가 아닙니다. 키가 25개뿐이라 누구나 전부 시도해 볼 수 있습니다. 컴퓨터가 없어도 메시지가 길면 글자 빈도만으로 금세 키가 드러납니다.
이런 용도에 쓰세요.
- 퍼즐 게임, 방탈출, 지오캐싱 단서
- 암호와 키의 원리를 가르칠 때
- 스포일러나 정답을 무심코 보지 않게 가릴 때
비밀번호, 개인 메시지, 보호가 필요한 정보에는 쓰지 마세요. 그런 용도에는 믿을 수 있는 앱에 들어 있는 최신 암호화를 쓰세요.
영어 알파벳 26자만 바뀌므로 한글 메시지는 이 방식으로 감출 수 없습니다. 한글은 입력한 그대로 남습니다.
다른 방법으로 변환하기
Linux, macOS, Git Bash에서는 tr 명령으로 정해진 이동을 적용할 수 있습니다. 다음 줄은 3칸 이동합니다.
echo 'Hello, World!' | tr 'A-Za-z' 'D-ZA-Cd-za-c'
Khoor, Zruog!가 출력됩니다. 복호화하려면 두 글자 범위의 순서를 바꾸거나, tr 'A-Za-z' 'X-ZA-Wx-za-w'로 23칸 앞으로 이동합니다.
Python에서 대문자용 한 줄 버전은 다음과 같습니다.
''.join(chr((ord(c)-65+3)%26+65) if c.isupper() else c for c in 'HELLO')
결과는 KHOOR입니다. Excel에서도 각 글자에 CODE, MOD, CHAR를 쓰면 같은 일을 할 수 있지만, 문장 전체에 적용하면 수식이 길어집니다.
관련 암호
13칸 이동은 별도 페이지가 있습니다. ROT13 인코더, 디코더를 쓰세요. 글자를 알파벳 순서 번호로 바꾸려면 A1Z26 암호를 사용해 보세요. 글자 대신 신호로 이루어진 부호가 궁금하다면 모스 부호 번역기가 있습니다.