시저 암호는 알파벳을 정해진 칸 수만큼 밀어서 다른 글자로 바꾸는 가장 단순한 치환 암호입니다. 이 페이지에서는 영문 문장을 암호화·복호화하고, 키(이동 칸 수)를 모를 때 가능한 모든 경우를 한 번에 펼쳐 볼 수 있습니다. 암호 수업 자료, 방탈출·퍼즐 문제 제작, 스포일러 가리기처럼 보안이 필요 없는 용도에 알맞습니다.
원리와 공식
알파벳 A~Z를 0~25번으로 번호 매기면, 암호화는 (번호 + 키) mod 26, 복호화는 (번호 − 키) mod 26입니다. mod 26은 Z 다음에 다시 A로 돌아오게 하는 나머지 연산이라 키가 음수이거나 26 이상이어도 같은 결과를 냅니다(키 29는 키 3과 동일, 키 −3은 키 23과 동일). 대문자는 대문자끼리, 소문자는 소문자끼리 밀기 때문에 대소문자 구분은 유지됩니다. 로마의 카이사르가 키 3을 썼다고 전해져 이름이 붙었지만, 이는 후대 역사가의 기록에 의한 전언이어서 세부는 확실하지 않습니다.
키 3과 키 13의 대응표 (빌드 시 계산)
| 키 | 원문 | 암호문 |
|---|---|---|
| 3 | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C |
| 13 | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | N O P Q R S T U V W X Y Z A B C D E F G H I J K L M |
검산된 예시
- "Hello, World!" 키 3 암호화 →
Khoor, Zruog!. 쉼표·공백·느낌표는 그대로입니다. 같은 키로 복호화하면 원문으로 돌아옵니다. - "ATTACK AT DAWN" 키 3 →
DWWDFN DW GDZQ. 같은 글자(T, A)가 항상 같은 글자(W, D)로 바뀌는 것이 보입니다. 이 규칙성이 해독의 단서가 됩니다. - ROT13: "Hello" →
Uryyb, 이를 다시 ROT13하면Hello. 키 13은 알파벳 26자의 정확히 절반이라 암호화와 복호화가 같은 연산입니다. - 한글·숫자 혼합: "Hello 안녕 123" 키 5 →
Mjqqt 안녕 123. 영문자만 이동하고 한글과 숫자는 그대로 남습니다.
키를 모를 때: 25가지를 전부 시도하는 해독
시저 암호의 의미 있는 키는 1~25의 25가지뿐입니다. 아래 표는 암호문 KHOOR에 모든 키를 되돌려 적용한 결과로, 키 3에서 사람이 읽을 수 있는 단어 HELLO가 나옵니다. 도구의 "25가지 전부 보기" 버튼도 같은 방식으로 입력한 암호문의 모든 후보를 나열하므로, 긴 문장이라면 의미가 통하는 줄을 한눈에 찾을 수 있습니다.
| 되돌린 키 | 결과 |
|---|---|
| 0 | KHOOR |
| 1 | JGNNQ |
| 2 | IFMMP |
| 3 | HELLO |
| 4 | GDKKN |
| 5 | FCJJM |
| 6 | EBIIL |
| 7 | DAHHK |
| 8 | CZGGJ |
| 9 | BYFFI |
| 10 | AXEEH |
| 11 | ZWDDG |
| 12 | YVCCF |
| 13 | XUBBE |
| 14 | WTAAD |
| 15 | VSZZC |
| 16 | URYYB |
| 17 | TQXXA |
| 18 | SPWWZ |
| 19 | ROVVY |
| 20 | QNUUX |
| 21 | PMTTW |
| 22 | OLSSV |
| 23 | NKRRU |
| 24 | MJQQT |
| 25 | LIPPS |
빈도 분석으로 키를 추리하는 과정
25가지를 전부 펼쳐 읽는 방법은 짧은 문장에서는 빠르지만, 수백 자짜리 암호문에서는 후보 25줄을 모두 읽기가 번거롭습니다. 이때 쓰는 요령이 글자 빈도 세기입니다. 영어 문장에서는 E와 T가 흔히 가장 많이 나타나므로, 암호문에서 가장 자주 나온 글자가 E(또는 T)가 이동한 결과라고 가정하면 키 후보를 바로 좁힐 수 있습니다. 다만 이것은 문장이 어느 정도 길 때의 경향일 뿐이며, 아주 짧은 문장에서는 빗나가는 일이 흔합니다. 아래는 평문 MEET ME AT THE OLD BRIDGE TONIGHT AFTER THE LECTURE을 키 7로 암호화한TLLA TL HA AOL VSK IYPKNL AVUPNOA HMALY AOL SLJABYL의 글자 수를 빌드 시 세어 본 표입니다(공백 제외 총 42자).
| 암호문 글자 | 횟수 | 비율 | E였다면 키 | T였다면 키 |
|---|---|---|---|---|
| L | 9 | 21.4% | 7 | 18 |
| A | 8 | 19.0% | 22 | 7 |
| O | 3 | 7.1% | 10 | 21 |
| Y | 3 | 7.1% | 20 | 5 |
| H | 2 | 4.8% | 3 | 14 |
1위 L과 2위 A가 모두 키 7을 가리키는 것이 보입니다. L이 E라면 키는 7이고, A가 T라면 키도 7이므로 두 가정이 서로 맞아떨어집니다. 이렇게 두 개 이상의 가정이 같은 키를 가리키면 그 키로 복호화해 읽어 보면 되고, 어긋나면 3위·4위 글자까지 넓혀 봅니다. 이 방법은 시저 암호가 글자 하나를 항상 같은 글자로 바꾸기 때문에 가능합니다. 글자 빈도가 사라지지 않고 위치만 옮겨지는 셈입니다.
상황별 사용 시나리오
- 방탈출 단서 만들기: 정답이 "OPEN THE BLUE BOX"라면 키 5로 암호화해
TUJS YMJ GQZJ GTC같은 쪽지를 만들 수 있습니다. 푸는 사람이 키를 모를 때를 대비해 "열쇠 번호는 방 안의 시계가 가리킨 시각" 같은 힌트 물건을 따로 두면 흐름이 자연스럽습니다. 단어 사이 공백을 남기면 쉬워지고 지우면 어려워지므로 난이도 조절 수단으로 쓰세요. - 정보 수업의 첫 암호 실습: 학생에게 같은 문장을 서로 다른 키로 암호화해 교환하게 한 뒤, 25가지 전부 보기 버튼 없이 손으로 풀게 하면 "키 공간이 작으면 전수 조사가 가능하다"는 개념을 체감할 수 있습니다. 이어서 키가 26자리 순열인 일반 치환 암호는 경우의 수가 26! (약 4.03×10^26)로 커지지만 빈도 분석에는 여전히 약하다는 점을 비교해 보세요.
- 커뮤니티 글의 스포일러 가리기: 영화 결말이나 퀴즈 정답을 ROT13으로 적어 두면 클릭 한 번으로 되돌려 볼 수 있어, 읽고 싶지 않은 사람이 실수로 보지 않게 막아 줍니다. 이때는 단순히 눈에 띄지 않게 하는 것이 목적이므로 키를 알릴 필요가 없습니다.
입력 경계와 특이 케이스
- 키 0과 ±26은 어떤 글자도 바꾸지 않습니다. 암호화한 결과가 원문과 똑같이 나오면 키를 확인하세요.
- 25가지 전부 보기는 키 1~25를 모두 되돌려 적용한 목록이며, 키 0(원문 그대로)은 제외됩니다. 위 KHOOR 표에는 비교를 위해 0도 포함했습니다.
- 줄바꿈과 탭은 그대로 유지되므로 여러 줄 문서도 줄 구조를 지킨 채 변환됩니다.
- 이모지·특수 기호도 A~Z가 아니므로 건드리지 않습니다. 글자 사이에 숫자나 한글이 끼어 있어도 영문자만 독립적으로 이동합니다.
- 복사 버튼은 브라우저가 클립보드 접근을 막으면 실패 안내를 보여 주며, 그 경우 결과창의 글자를 직접 선택해 복사하면 됩니다.
시저 암호와 다른 방식 구분하기
시저 암호는 모든 글자를 같은 칸 수만큼 밀고, 비즈네르 암호는 키워드의 글자 순서대로 칸 수를 바꿔 가며 밉니다.치환 암호는 알파벳을 임의의 순열로 바꿉니다. 이들은 모두 글자를 다른 글자로 바꿀 뿐 글자의 순서는 유지하므로 고전 암호로 분류되며, 현대의 AES처럼 수학적으로 안전성이 검증된 방식과는 성격이 다릅니다. 반면 Base64나 16진수는 키 자체가 없는 단순 표기 변환이어서 누구나 도구로 되돌릴 수 있습니다. 읽기 어렵게 보이는 것과 실제로 안전한 것은 다르다는 점이 이 비교의 핵심입니다.
손으로 계산해 보기와 한국어 문장 다루기
도구 없이도 풀 수 있습니다. 암호문 Zruog를 키 3으로 복호화하려면 각 글자 번호에서 3을 빼면 됩니다. Z는 25이므로 25 − 3 = 22(W), r은 17 − 3 = 14(o), u는 20 − 3 = 17(r), o는 14 − 3 = 11(l), g는 6 − 3 = 3(d)이 되어 World가 나옵니다. A처럼 0에 가까운 글자는 뺄 때 음수가 되므로 26을 더해 줍니다(A − 3 = −3 → 23, 즉 X).
한글 문장을 이 방식으로 숨기려면 먼저 로마자 표기로 바꿔야 합니다. 예를 들어 "annyeong"을 키 3으로 암호화하면 dqqbhrqj가 되고 "seoul"을 ROT13하면 frbhy가 됩니다. 한글 로마자 표기는 한글 로마자 변환기로 만들 수 있습니다. 다만 이 과정은 한글 정보를 로마자로 풀어 쓰는 것일 뿐 암호의 강도를 높여 주지는 않습니다.
공백과 띄어쓰기가 그대로 남기 때문에 단어 길이가 노출되고, "The quick brown fox"가 Wkh txlfn eurzq ira가 되어도 3글자 단어 두 개와 5글자 단어 두 개라는 구조가 드러납니다. 퍼즐을 만들 때는 공백과 구두점을 지우고 5글자씩 끊어 쓰면 해독이 조금 어려워지지만 근본적인 약점은 그대로입니다. 글자마다 키를 바꾸는 비즈네르 암호처럼 시저 암호를 발전시킨 방식이 있었지만, 그것 역시 현대 컴퓨터 환경에서는 안전하지 않습니다.
한계와 흔한 오해
- 보안성이 사실상 없습니다. 키가 25가지뿐이라 사람이 손으로도 몇 분이면 풀리고, 컴퓨터는 즉시 풉니다. 비밀번호·개인정보·업무 문서 보호에 쓰면 안 됩니다. 실제 보안에는 AES 같은 검증된 표준 암호와 검증된 라이브러리를 사용하세요.
- 글자 빈도가 그대로 남습니다. 영어에서 E가 가장 자주 나온다는 통계적 특징이 암호문에서도 한 글자로 대응되어 나타나므로, 키를 몰라도 빈도 분석으로 해독할 수 있습니다.
- 한글·숫자·기호는 암호화되지 않습니다. 한글 음절은 1만 개 이상이라 26칸 순환 구조와 맞지 않아 원문 그대로 둡니다. 한글 문장을 이 도구에 넣으면 아무것도 숨겨지지 않으니 주의하세요. 숫자도 그대로라서 "Room 304" 같은 문구의 숫자는 노출됩니다.
- 악센트 문자(é, ü 등)는 A~Z가 아니므로 이동하지 않습니다.
- 반복 적용은 보안을 높이지 않습니다. ROT13을 두 번 적용하면 원문으로 돌아오고, 키 3을 두 번 쓰는 것은 키 6 한 번과 같습니다.
- 빈 입력이나 정수가 아닌 키는 변환하지 않고 안내 메시지를 보여줍니다. 소수점이 있는 키는 허용하지 않습니다.
결과 활용법
퍼즐을 만들 때는 암호문과 함께 "키는 3월 7일의 7" 같은 힌트를 달아 난이도를 조절할 수 있고, 푸는 사람은 "25가지 전부 보기"로 접근할 수도 있습니다. 문자를 숫자 코드로 바꿔 보고 싶다면 텍스트 2진수·16진수 변환기, 단순 치환이 아닌 표준 해시나 인코딩을 확인하려면 해시 생성기와Base64 변환기, 같은 부류의 고전 부호는 모스부호 변환기를 참고하세요. 해시는 되돌릴 수 없고 Base64는 암호가 아닌 인코딩이라는 점이 시저 암호와 다릅니다.
자주 묻는 질문
한글도 시저 암호로 변환할 수 있나요?
이 도구는 전통 방식대로 영문 알파벳(A~Z, a~z)만 이동시킵니다. 한글은 원문 그대로 유지되므로 한글 문장을 숨기는 용도로는 쓸 수 없습니다.
암호화한 텍스트를 다시 원래대로 되돌리려면 어떻게 하나요?
암호화에 쓴 것과 같은 키를 입력하고 "복호화"를 누르세요. 키를 잊었다면 "25가지 전부 보기"로 의미가 통하는 줄을 찾으면 됩니다.
키를 음수나 26 이상으로 넣어도 되나요?
-25~25 범위를 권장하지만 26으로 나눈 나머지로 처리되어 결과는 같습니다. 키 0이나 26은 아무 글자도 바꾸지 않습니다.
대문자와 소문자가 섞인 문장은 어떻게 되나요?
각 글자의 대소문자를 유지한 채 이동합니다. 예를 들어 "Zebra"를 키 1로 암호화하면 Z가 A로 순환해 "Afcsb"가 됩니다.
암호문이 매우 짧으면 빈도 분석이 안 되나요?
네, 글자 수가 적으면 가장 많이 나온 글자가 E가 아닐 수 있어 신뢰하기 어렵습니다. 5~10글자 정도의 짧은 단어는 25가지 전부 보기로 읽어 보는 편이 확실합니다.
암호화를 두 번 하면 더 안전해지나요?
아닙니다. 키 a로 한 번, 키 b로 한 번 암호화하는 것은 키 a+b로 한 번 암호화하는 것과 같아 후보가 여전히 25가지뿐입니다.
문장부호와 공백까지 함께 가리려면 어떻게 하나요?
이 도구는 영문자만 이동시킵니다. 공백과 부호를 숨기려면 변환 결과에서 공백을 직접 지우고 일정한 글자 수로 끊어 쓰는 방법이 있으나, 단어 경계 정보가 줄 뿐 해독 난이도는 크게 오르지 않습니다.
ROT13은 왜 아직도 쓰이나요?
한 번 더 적용하면 원문이 되어 구현이 쉽고, 스포일러나 퀴즈 정답처럼 눈에 바로 띄지 않게만 하고 싶을 때 충분하기 때문입니다. 보안 목적이 아니라 "실수로 읽지 않게 하는" 장치입니다.