에니그마 암호기 시뮬레이터
2차대전 독일군이 실전에 쓴 로터(회전자) 기반 암호기를 재현해, 로터 순서·링세팅·플러그보드를 정해 영문을 암호화·복호화합니다.
텍스트
로터 (왼쪽 · 가운데 · 오른쪽)
링세팅
시작 위치
결과
자기역원 암호라 암호화·복호화가 같은 연산입니다 — 결과를 정확히 같은 로터·링세팅·시작 위치·플러그보드로 다시 넣으면 원문으로 돌아옵니다. 시작 위치는 암호화가 진행되며 계속 바뀌므로, 복호화할 때는 반드시 암호화를 시작했을 때의 시작 위치로 다시 맞춰야 합니다.
사용 방법
- 1로터 3개(왼쪽·가운데·오른쪽)와 각각의 링세팅·시작 위치를 정합니다.
- 2리플렉터(B 또는 C)와 플러그보드 연결(선택)을 정합니다.
- 3텍스트를 입력합니다. 자기역원 암호라 같은 설정으로 결과를 다시 넣으면 원문으로 돌아옵니다.
자주 묻는 질문
글자를 누르면 신호가 플러그보드 → 로터 3개(오른쪽부터 왼쪽으로) → 리플렉터 → 로터 3개(다시 왼쪽에서 오른쪽으로) → 플러그보드 순서로 지나가며 여러 번 치환됩니다. 매 글자를 넣기 전에 로터가 최소 하나(오른쪽 로터는 항상) 회전해, 같은 글자를 두 번 눌러도 매번 다른 글자가 나옵니다.
리플렉터가 신호를 항상 다른 글자로 되돌리기 때문입니다(어떤 글자도 리플렉터에서 자기 자신과 연결되지 않습니다). 이 성질은 실전에서는 편리했지만, 훗날 연합군이 에니그마를 해독하는 데 중요한 실마리가 되었습니다.
가운데 로터가 노치(턴오버) 위치에 있으면, 다음 글자를 넣을 때 왼쪽 로터와 가운데 로터가 함께 회전하는 실제 에니그마 기계의 특징적인 동작입니다. 이 계산기도 이 규칙을 그대로 구현했습니다.
로터 배선·리플렉터 배선·노치 위치는 서로 다른 두 출처에서 교차 검증했고, 표준으로 알려진 테스트 벡터(로터 I·II·III, 리플렉터 B, 링세팅 AAA, 시작 위치 AAA로 "AAAAA"를 넣으면 "BDZGO"가 나오는 것과 링세팅을 BBB로 바꾸면 "EWTYX"가 나오는 것)로 이 구현 전체를 대조해 정확히 일치하는 것을 확인했습니다.
알아두면 좋은 점
- 표준 테스트 벡터 두 개(AAAAA→BDZGO, 링세팅만 바꿔 AAAAA→EWTYX)로 로터 배선·리플렉터·스테핑 전체를 대조 검증했습니다.
- 더블스테핑 규칙(가운데 로터가 노치에 있을 때 왼쪽·가운데가 함께 도는 것)을 로터 스테핑 함수만 따로 떼어 직접 검증했습니다.
- 로터는 I~V, 리플렉터는 B·C만 지원합니다(2차대전 독일 육공군 3로터 에니그마 기준). 4로터 해군형(M4)은 다루지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.