힐 암호

Written by Integralus

이론과 설명

힐 암호는 행렬을 이용한 치환암호의 일종이다. 1929년 레스터 힐이라는 미국 수학자에 의해 발명되었으며, 단순 치환암호와는 달리 둘 이상의 알파벳을 함께 다른 문자로 바꾸기 때문에 빈도 분석에 쉽게 깨지지 않는다는 특징이 있다.

힐 암호 역시 26을 법으로 하는 연산을 바탕으로 하며, 다음과 같은 암호화 열쇠 행렬을 이용한다.

$$f(X)=KX \pmod{26}$$

여기서 K는 암호화 열쇠이며, n차 정사각행렬이고. X는 n개의 문자열을 벡터로 묶은 것이다. K가 26을 법으로 하는 정수 연산에서 역행렬을 가진다면 복호화함수는 다음과 같이 구할 수 있다.

$$f^{-1}(X)=K^{-1}X \pmod{26}$$

특히 n이 2일 경우, 즉 암호화 열쇠 행렬이 2차 정사각행렬일 경우 다음과 같이 표현할 수 있다.

$$f\begin{pmatrix} x\\y \end{pmatrix}=\begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x\\y \end{pmatrix} \pmod{26}$$

이 때 a,b,c,d는 암호화 열쇠로 사용할 정수이며, %%GCD(ad-bc, 26) = 1%%을 만족해야 한다. x, y는 암호화할 평문의 두 글자이다. 26을 법으로하는 연산에서 2차 정사각행렬의 역행렬은 다음과 같이 구할 수 있다.

$$\begin{pmatrix} a & b \\ c & d \end{pmatrix}^{-1} = (ad-bc)^{-1} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix} \pmod{26}$$

따라서 복호화 함수는 다음과 같은 형태로 얻어진다.

$$f^{-1}\begin{pmatrix} x\\y \end{pmatrix}=(ad-bc)^{-1} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix} \begin{pmatrix} x\\y \end{pmatrix} \pmod{26}$$

힐 암호 변환기

적당한 암호화 열쇠 행렬을 입력하고 암호화 버튼을 누르면 암호문을 볼 수 있습니다. 복호화를 위해서는 역행렬 계산 버튼을 눌러 복호화키를 얻어낸 뒤 암호문을 입력하여 암호화 버튼을 누르거나, 그냥 복호화 버튼을 눌러도 됩니다.

변환 시 구두점과 띄어쓰기 등은 모두 제거되며, 문자 길이가 2의 배수가 아닐경우 마지막에 문자 X가 추가될 수 있습니다.

결과