레일 펜스 암호 인코더·디코더
레일 펜스 전치 암호로 텍스트를 인코딩·디코딩합니다 — 정해진 레일 수만큼 지그재그로 메시지를 적고 행별로 읽어냅니다. 브라우저에서 실행됩니다.
사용법
- 인코딩 또는 디코딩을 선택합니다.
- 레일 수(2 이상)를 설정합니다 — 이것이 키입니다.
- 메시지나 암호문을 입력하거나 붙여넣습니다.
- 결과를 확인하고 복사합니다. 같은 레일 수로 디코딩하면 인코딩이 역전됩니다.
자세한 설명
펼치기접기
레일 펜스는 전치 암호입니다. 메시지의 글자들을 정해진 수의 레일에 걸쳐 아래로 갔다가 다시 위로 지그재그로 적은 뒤, 한 행씩 읽어 냅니다. 무엇도 치환되지 않습니다. 평문의 모든 글자가 순서만 바뀐 채 그대로 남아 있으므로, 열쇠는 그저 레일을 몇 개 썼는가이고, 같은 수로 해독하면 전부 제자리로 돌아옵니다.
"무엇도 치환되지 않는다"는 이 성질이 전치 암호의 정체를 즉시 드러냅니다. 암호문의 글자를 세어 보면 빈도가 평범한 글에서와 똑같습니다. E는 여전히 가장 흔한 글자이고, 분포는 여전히 원래 언어처럼 보입니다. 치환 암호는 그 곡선을 다른 기호들 위로 옮겨 놓지만, 전치는 곡선을 있던 자리에 그대로 둡니다. 그래서 분석가가 레일 펜스 메시지에서 가장 먼저 알아내는 것은, 열쇠를 하나도 시도해 보기 전에 이것이 레일 펜스이거나 그 비슷한 무언가라는 사실입니다.
문제의 나머지 절반은 열쇠 공간이고, 그것은 아주 작습니다. 레일 수는 2부터 메시지 길이 바로 아래까지만 갈 수 있으므로, 100자짜리 메시지에는 가능한 열쇠가 100개도 되지 않고, 그 전부를 스크롤하는 시간 안에 시도하고 읽어 볼 수 있습니다. 레일 2개는 퇴화한 경우로, 홀수 번째 글자와 짝수 번째 글자를 갈라 놓는 것에 지나지 않습니다. 또 지그재그는 레일 수의 두 배에서 2를 뺀 주기로 반복되는데, 레일 수를 모를 때 해독자가 찾는 것이 바로 이 주기입니다.
그렇다고 쓸모없어지는 것은 아닙니다. 비밀스럽지 않을 뿐입니다. 퍼즐용 암호로는 정말 훌륭하고, 대체하는 것만큼이나 재배열하는 것도 의미를 감출 수 있다는 발상을 대부분의 사람이 처음 만나는 자리이기도 합니다. 그리고 합성이 됩니다. 치환 뒤에 전치를 적용하면 각각 하나만 있을 때는 통했을 빈도 분석이 무력해지는데, 고전 암호학이 몇 세기에 걸쳐 도달한 통찰이 대략 그것입니다. 퍼즐이나 수업, 게임에는 쓰세요. 낯선 사람이 읽어도 상관없지 않은 것에는 쓰지 마세요.
자주 묻는 질문
레일은 무슨 역할을 하나요?
레일은 지그재그가 오가는 가로선입니다. 레일이 많을수록 패턴과 암호문이 달라지며, 받는 사람은 같은 수로 디코딩해야 합니다. 레일이 2개면 메시지가 홀수·짝수 위치로 단순히 나뉩니다.
공백과 문장부호도 유지되나요?
네 — 공백을 포함한 모든 문자가 전치됩니다. 더 전통적인 형태를 원하면 인코딩 전에 공백을 제거하고 대문자로 바꾸세요. 여기서는 필수는 아닙니다.
레일 펜스 암호는 안전한가요?
아니요. 가능한 키(레일 수)가 매우 적은 역사적 종이·연필 암호라서 각 값을 시도해 보면 쉽게 깨집니다. 실제 보안이 아니라 퍼즐과 학습용으로 쓰세요.
전치 암호는 어떻게 깨지나?
글자를 세면 된다. 메시지를 재배열해도 어떤 글자들이 들어 있는지는 바뀌지 않으므로, 글자 빈도가 여전히 평범한 영어와 일치한다. 그것만으로 분석가는 이 글이 치환이 아니라 전치됐다는 것을 바로 안다. 그다음부터 레일 수는 전부 시도해볼 만한 작은 수이고, 맞는 값은 읽히는 단어가 나타나는 순간 스스로를 드러낸다.
비밀 유지가 아니라면 이건 어디에 쓸모가 있나?
암호가 정체가 아니라 배열을 감출 수도 있다는 발상을 가르치는 데, 그리고 푸는 사람이 손으로 열쇠를 찾도록 만든 퍼즐에 쓸모가 있다. 정작 중요한 것은 역사적 후손 쪽이다. 전치는 치환한 다음 전치한다는 짝의 한쪽이 되어 백 년 동안 진지한 암호에 쓰였다. 각 단계가 다른 단계가 남겨두는 것을 가리기 때문이다.
관련 도구
카이사르 / ROT13 / Vigenère / Atbash 암호
고전 치환 암호 4종으로 텍스트 암복호화 — 카이사르 이동·ROT13·Vigenère 키워드·Atbash 거울.
텍스트
Leetspeak(1337) 변환기
텍스트를 leetspeak로 변환하고 1337을 다시 글자로 디코딩합니다. 브라우저에서 동작합니다.
텍스트
글자수 단어수 카운터
글자·단어·문장·줄·바이트 수를 실시간으로 셉니다.
텍스트
대소문자 변환기
대문자·소문자·Title·camelCase·snake_case 등으로 변환하세요.
텍스트
Lorem Ipsum 생성기
문단·문장·단어 단위로 자리표시자 텍스트를 생성하세요.
텍스트
텍스트 Diff 뷰어
두 텍스트를 비교해 줄·단어 단위로 추가·삭제를 강조해서 보여 줍니다.
텍스트