본 글에서는 정칙행렬의 역행렬을 구하는 방법인 가우스-조르단의 소거법과 행렬의 곱연산에 대해서는
자세히 다루지 않는다.
정칙행렬과 역행렬을 이용해 간단히 암호화&복호화를 해보겠다.
정칙행렬이란 n차 정방행렬 중 (정방행렬: 1X1, 2X2, 3X3, 4X4과 같은 행렬을 말한다.)
"AB = BA = I(단위 행렬)"를 만족하는 행렬을 말한다.
간단히 얘기해 역행렬을 갖는 정방행렬을 의미한다.
A라는 n차 정방행렬에 어떤 행렬을 곱해서 단위 행렬이 된다면 그 어떤 행렬을
A의 역행렬이라고 부른다.
암호화 하는 방법은 간단하다.
우선 내가 암호화하고자 하는 평문은 JEONG084이다.
위의 평문을 위의 문자 대치표에서 1:1로 매치시키게 되면 아래와 같이 된다.
J | E | O | N | G | 0 | 8 | 4 |
9 | 4 | 14 | 13 | 6 | 0 | 8 | 4 |
암호화하는데 사용하고 싶은 정칙행렬이 3차이냐, 4차이냐는 내가 원하는 대로 정하면 된다.
여기서는 총 8글자이기에 4차 정칙행렬과의 곱연산을 통해 암호화 해보겠다.
4차 정칙행렬 = 행렬A | |||
1 | 0 | 0 | 1 |
3 | 1 | 2 | 2 |
1 | 0 | 2 | 1 |
2 | 0 | 0 | 1 |
암호화하는 방법은 내가 암호화 하고 싶은 텍스트를 숫자로 매칭시킨다음 정칙행렬과 곱연산을 하는 것이다.
행렬의 곱연산은 앞의 행렬의 열과 뒤의 행렬의 행의 크기가 같아야한다.
Ex) A행렬 : 3 X 2 / B행렬 : 2 X 3 >>이와 같을 경우 곱연산이 가능하며, AB의 크기는 3X3이 된다.
위에 평문을 숫자와 매칭 시켜둔 것을 4자리로 잘라 2개로 만들어준다.
{9, 4, 14, 13} 이것을 행렬 X라 부르고
위의 행렬 A와 곱연산을 한다.
X는 1행 4열의 행렬이고, A는 4행 4열 행렬이기에 곱연산을 하고난 XA의 결과는 1행 4열의 크기가 나온다.
XA = {61, 4, 36, 44} 가 나오게 된다.
이것이 암호문이 되고, 이 숫자만 가지고는 원래 평문을 알수가 없다.
J | E | O | N |
9 | 4 | 14 | 13 |
61 | 4 | 36 | 44 |
다시 복호화 시키는 방법은 암호화 시킬 때 사용했던 4차 정칙행렬의 역행렬을 구한 후
위에서 암호화시킨 XA = {61, 4, 36, 44} 이것과 역행렬과 곱연산을 하면 된다.
그러면 암호화시키기 이전의 숫자인 {9, 4, 14, 13}이 나오게 된다.
행렬A의 역행렬 | |||
-1 | 0 | 0 | 1 |
0 | 1 | -1 | -1 |
-1/2 | 0 | 1/2 | 0 |
2 | 0 | 0 | -1 |