자동키 암호화 사용하는법
컨텐츠 정보
- 1,709 조회
본문
자동키암호화는 다른 암호화 방식과는 다르게 키가 따로 필요없어요.
문자열들의 상관관계속에서 자동으로 키가 생성되요.
그래서 "자동키암호화" 라고 부르는거에요.
구지 따지자면, 초기값을 설정해주기 위한 키가 하나 있지만
그 키는 암호문에 별다른 영향을 주지 못해요.
말로만 설명하니까 쉬운것도 어려워보이네요;;
그래서 표로!!!
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
n |
o |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
우선 위의 표는 알파벳을 숫자로 나타내본거에요.
암호학에서는 기본적으로 알파벳을 숫자로 치환해서 사용해요~
자, 이제 아래표를 보아요~
평문(알파벳) |
l |
o |
v |
e |
평문(숫자) |
11 |
14 |
21 |
4 |
키값 |
5(초기값) |
11 |
14 |
21 |
암호문(숫자) |
16 |
25 |
9 |
25 |
암호문(알파벳) |
q |
z |
j |
z |
이 표는 암호화 과정을 나타낸 표에요.
평문 "love" 를 암호화 했더니 암호문 "qzjz" 가 된거에요.
무엇보다도 여기서 키값이 어떻게 정해지는지가 중요해요!!!
아마 잘 보면 규칙을 발견할 수 있어요.
키값 5는 초기값으로 사용자가 직접 설정해줘야되요.
그리고 나머지 키값들은 자동으로 결정되요.
다음 단계 키값은 이전 단계 평문(숫자)값이 된다는 것을 알 수 있어요.
이렇게 처음을 제외한 모든 키값은 자동적으로 정해져요.
그리고 이 키값을 이용해서 암호문을 만들수 있어요.
위 표에서 알파벳의 암호화 방식은
(평문(숫자) + 키값) mod 26 = 암호문(숫자)
이에요.
예를들어, 알파벳 "l" 의 경우
(11+5) mod 26 =16
이렇게 계산할 수 있고, 여기서 암호문자의 값은 16이되요.
16을 알파벳으로 치환하면 "q" 가 나와요.
알파벳 "l" 말고 "o", "v", "e" 에대해서도 똑같은 방식으로
암호문자를 구할 수 있어요.
어때요?ㅎ 별로 안 어렵지요?
자동키암호화는 방법이 간단한대비해서 보안성이 좋아요.
"love" 를 암호화 한 "qzjz" 문자열을 보면
"z" 가 두 번 나왔어요.
분명 "love" 속의 문자 중 같은 문자는 없는데
암호문에는 "z"가 두 번 나온거죠.
이것은 빈도수를 이용한 어택을 방어할 수 있다는 것을 의미해요.
물론 취약점 또한 존재해요.
단순히, 앞뒤 문자관의 상관관계를 이용해 키를 생성하다보니
만약 공격자가 그 관계를 알아낸다면 암호가 쫘르륵 다 풀려버릴 수가 있어요.
이제 자동키암호화 방식을 vb6.0 코딩으로 표현해볼게요.
'---------------------------------------
'@Producted By Jiho
'프로그램명 : 자동키암호화 & 복호화
'제작일 : 2013.09.08
'---------------------------------------
'자동키암호화 함수
Public Function AutoKeyEncryption(M As String)
Dim i As Long
Dim C As String
Dim temp As Long
Dim first As Long
'첫번째 키값 임시저장
temp = Asc(Mid(M, 1, 1)) - 97
For i = 2 To Len(M) '한단계 전의 키값+평문의 값=암호문C
C = C & Chr(((temp + Asc(Mid(M, i, 1)) - 97) Mod 26) + 97)
temp = Asc(Mid(M, i, 1)) - 97
Next i
M = Mid(M, 1, 1) & C '결과값 반환
End Function
'자동키복호화 함수
Public Function AutoKeyDecoding(C As String)
Dim i As Long
Dim M As String
Dim temp As Long
Dim first As Long
'첫번째 키값 임시저장
temp = Asc(Mid(C, 1, 1)) - 97
For i = 2 To Len(C) '암호문 값-키값=평문M
If Asc(Mid(C, i, 1)) - 97 - temp > 0 Then
M = M & Chr(((Asc(Mid(C, i, 1)) - 97 - temp) Mod 26) + 97)
Else
M = M & Chr(((Asc(Mid(C, i, 1)) - 97 - temp + 26) Mod 26) + 97)
End If
temp = ((Asc(Mid(C, i, 1)) - 97 - temp) Mod 26)
Next i
C = Mid(C, 1, 1) & M '결과값 반환
End Function
Dim M As String
Private Sub Form_Load()
M = "myloveisyou"
MsgBox M
AutoKeyEncryption M
MsgBox M
AutoKeyDecoding M
MsgBox M
End Sub
관련자료
-
이전
-
다음