기타

정칙행렬과 역행열을 이용한 암호화&복호화

duduranran 2022. 11. 7. 23:58

본 글에서는 정칙행렬의 역행렬을 구하는 방법인 가우스-조르단의 소거법과 행렬의 곱연산에 대해서는

자세히 다루지 않는다.

 

정칙행렬과 역행렬을 이용해 간단히 암호화&복호화를 해보겠다.

 

정칙행렬이란 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