mod
7
|
공개키
|
4
|
|
개인키
|
2
|
|
원문
|
6
|
6 * 4 mod 7 = 3
원문 * 공개키 mod 7 = 암호문
3 * 2 mod 7 = 6
암호문 * 개인키 mod 7 = 원문
조건 1. 원문도 mod로 나누는 숫자보다 작아야한다.
조건 2. 공개키와 개인키를 곱해서 mod 숫자로 나눈것이 1인 수
mod
11
|
공개키
|
4
|
|
개인키
|
3
|
|
원문
|
10
|
10 * 4 mod
11 = 7
원문 * 공개키 mod 11 = 암호문
7
* 3 mod 11 = 10
암호문 * 개인키 mod 11 = 원문
*단어 암호화
역수가 1인 4와 17을 공개키와 개인키로 사용한다.
아무거나 넣어서 테스트해본다.
mod
67
|
공개키
|
4
|
|
개인키
|
17
|
|
원문
|
40
|
40 * 4 mod 67 = 26
원문 * 공개키 mod 67 = 암호문
26 *
17 mod 67 = 40
암호문 * 개인키 mod 67 = 원문
# 본격적인 단어 알고리즘을 시작한다.
아스키 코드처럼 숫자를 치환하여 apple 을 위에 알고리즘으로 암호화한다.
a-z = 0-25
나머지는 따로 지정해주어야한다.
아래표를 참조한다.
이대로 apple을 치환하면
|
a
|
p
|
p
|
l
|
e
|
|
0
|
15
|
15
|
11
|
4
|
0
15 15 11 4
mod를 이용하여 위에 숫자를 암호화한다. 공개키는 4 다.
0 *
4 mod 67 = 0
15 *
4 mod 67 = 60
15 *
4 mod 67 = 60
11 *
4 mod 67 = 44
4 *
4 mod 67 = 16
암호화된 숫자다.
0 60 60 44 16
복호화 해본다. 비밀키는 17이다.
0 *
17 mod 67 = 0
60 *
17 mod 67 = 15
60 *
17 mod 67 = 15
44 *
17 mod 67 = 11
16 *
17 mod 67 = 4
복호화된 숫자다.
0
15 15 11 4
숫자를 알파벳으로 치환하면
apple 이 나온다.
0을 넣으면 0이 나오므로 0으로 알파벳을 치환하면 안된다.
알파벳은 사실 제일좋은건 29로 mod를 만드는게 좋다.
mod
29
개인키 5
공개키 6
치환
b
h e + i
q r q
l m k y
h m c
y m e
2
8 5 28 9 17 18 17 12 13 11 25 8 13 3 25 13 5
복호화
2 * 6 mod 29 = 12
8 * 6 mod 29 = 19
5 * 6 mod 29 = 1
28 * 6 mod 29 = 23
9 * 6 mod 29 = 25
17 * 6 mod 29 = 15
18 * 6 mod 29 = 21
17 * 6 mod 29 = 15
12 * 6 mod 29 = 14
13 * 6 mod 29 = 20
11 * 6 mod 29 = 8
25 * 6 mod 29 = 5
8 * 6 mod 29 = 19
13 * 6 mod 29 = 20
3 * 6 mod 29 = 18
25 * 6 mod 29 = 5
13 * 6 mod 29 = 20
5 * 6 mod 29 = 1
12
19 1 23 25 15 21 15 14 20 8 5 19 20 18 5 20 1
l
s a w
y o u
o n t h e
s t r
e t a
i
saw you on the street
암호화는 오타가 있는게 정상이다.
댓글 없음:
댓글 쓰기