게임강의

비베 오토키 사용법

컨텐츠 정보

본문


자동키암호화는 다른 암호화 방식과는 다르게 키가 따로 필요없어요.



문자열들의 상관관계속에서 자동으로 키가 생성되요.



그래서 "자동키암호화" 라고 부르는거에요.



 



구지 따지자면, 초기값을 설정해주기 위한 키가 하나 있지만



그 키는 암호문에 별다른 영향을 주지 못해요.



 



말로만 설명하니까 쉬운것도 어려워보이네요;;



 



그래서 표로!!!





 




a









e



















0





















10 



11 



12 



 n 



























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 





25 



암호문(알파벳) 



q



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


관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


  • 글이 없습니다.

새댓글


  • 댓글이 없습니다.
알림 0