본문 바로가기
Infra & Security Eng/Network & Security

개인키 암호화 실습

by 엔지니어 E 2026. 3. 17.
반응형

암호화 실습.txt
0.00MB

 

문자개수와 mod 정하기 

1. 문자개수: 30개 (알파벳+특수문자)
* 30개로 정한 이유
- 알파벳은 총 26글자이므로 암호를 완벽하게 주고 받기 위해 우리가 사용하는 숫자의 범위는 반드시 소수여야 한다. 26은 소수가 아니므로 29, 31 등의 소수를 적용해야한다. 그래서 mod31을 선택하였다

2. 연산 체계 선택: mod31
- 곱셈 암호에서 0은 어떤 수를 곱해도 결과가 0이 되는 숫자이다. 만약 원문에 0은 암호화 과정에서 정보가 완전히 사라져 복구가 불가능 해진다. 따라서 mod31 연산을 통해 나오는 0~ 30의 결과 중 0은 사용하지 않는 버리는 칸으로 두고 나머지 1~30번까지만 문자를 배정 하였다 

* mod 31을 정한다면 우리가 사용할 수 있는 숫자의 공간은 0번부터 30번까지 총 31개가 생성되지만 0은 제외하여 문자개수는 30개가 된다

 

코드표

숫자 문자 숫자 문자 숫자 문자 숫자 문자 숫자 문자
1 a 7 g 13 m 19 s 25 y
2 b 8 h 14 n 20 t 26 z
3 c 9 i 15 o 21 u 27 ~
4 d 10 j 16 p 22 v 28 !
5 e 11 k 17 q 23 w 29 @
6 f 12 l 18 r 24 x 30 #

 

개인키 암호화 실습 (예시)

1단계: 코드표 정의(문자와 숫자의 약속)
암호화를 하려면 먼저 글자를 숫자로 바꿔야 한다. 1부터 30까지의 숫자에 글자와 기호를 하나씩 배정 한다 

2단계: 키 생성(공개키와 개인키 결정)

mod 31 연산에서 두 수를 곱했을 때 31로 나눈 나머지가 1이 되는 두 숫자를 찾는다
공개키(e): 4 / 개인키(d): 8
* 4*8/31=나머지 1 이므로 

3단계: 서명문 생성( 개인키로 암호화하기)

1. 문자를 숫자로 변환
원문이 a,c,e 이므로 숫자는 1,3,5 가 된다 

2. 개인키(8) 곱하기
a: 1*8=8
c: 3*8=24
e:5*8=40

3. mod 31 계산(31로 나눈 나머지 구하기)
8: 나머지=8
24: 나머지=24
40: 나머지= 9

4. 다시 문자로 변환 
8 = h
24 = x
9 = i

공개키: 4
서명문: hxi