# 아핀 암호 (Affine Cipher)

아핀 암호는 고전적인 수기 치환 암호 중 하나로, 각 문자를 숫자로 바꾼 뒤 수학적으로 F(x) = ax + b (mod n)으로 암호화합니다. 이름의 「아핀」은 곱셈 ax에 0이 아닌 상수 b를 더하는 아핀 변환이라는 뜻이며, b = 0이면 순수한 곱셈 암호, a = 1이면 시저 암호(이동 암호)가 됩니다.

## 공식의 각 항

- **x:** 암호화하려는 문자의 숫자 값입니다(A=0, B=1, …, Z=25).
- **a:** 곱하는 키입니다. a와 n은 서로소, 즉 최대공약수가 1이어야 합니다. 그래야 a의 모듈러 역원 a^−1이 존재해 복호화 결과가 하나로 정해집니다.
- **b:** 더하는 키(이동량)입니다.
- **n:** 알파벳의 문자 수입니다(영어는 26).
- **mod n:** 결과를 n으로 나눈 나머지를 취해 항상 알파벳 범위 안에 머물게 합니다.

## 복호화

복호화 함수는 D(y) = a^−1(y − b) (mod n)입니다. 예를 들어 n = 26, a = 7이면 7 × 15 = 105 = 4 × 26 + 1이므로 a^−1 = 15입니다.

## 예시

- **a = 5, b = 8:** A(0)는 I(8), B(1)는 N(13), C(2)는 S(18)가 됩니다.
- **a = 7, b = 3으로 「HELLO」 암호화:** H(7) → (7×7+3) mod 26 = 52 mod 26 = 0 → A, E(4) → (7×4+3) mod 26 = 31 mod 26 = 5 → F. 같은 방식으로 이어 가면 암호문은 「AF…」로 시작합니다.

## 안전성

- **작은 키 공간:** n = 26에서 26과 서로소인 a는 12개, b는 26개이므로 가능한 키는 12 × 26 = 312개뿐입니다. 모든 키를 손으로 시도해도 될 만큼 적습니다.
- **빈도 분석:** 한 문자는 항상 같은 문자로 바뀌는 단일 문자 치환이므로, 문자 빈도만으로 쉽게 풀립니다.
- **알려진 평문 공격:** 평문-암호문 문자 쌍 두 개만 알면 대개 연립 합동식으로 a와 b를 구할 수 있습니다(두 평문 문자 값의 차가 26과 서로소이면 해가 하나로 정해집니다).

## 용도

단순성과 취약성 때문에 아핀 암호는 실제 보안 통신에 쓰이지 않습니다. 다만 공식이 간단해 손으로도 쉽게 계산할 수 있어, 모듈러 산술, 모듈러 역원, 키 공간 같은 기본 암호 원리를 소개하는 교육용 예제로 쓰입니다.

---
출처: https://achivx.kr/glossary/affine-cipher-%EC%96%B4%ED%8C%8C%EC%9D%B8-%EC%95%94%ED%98%B8/ · ACHIVX 용어 사전 · 수정일 2026-10-20
