반응형

 

안녕하세요~ 알기쉽게 설명하는 초보자를 위한 무꼬입니다.

오늘은 Visual Basic으로 암호화 및 복호화 코딩에 대해 강좌를 하도록 하겠습니다 ㅎㅎ


우선 암호화복호화에 대해 알아보죠~!


[암호화]

데이터 전송 시 타인의 불법적인 방법에 의해 데이터가 손실되거나 변경되는 것을 방지하기 위해 데이터를 변환하여 전송하는 방법.

의미를 알 수 없는 형식(암호문)으로 정보를 변환하는 것.


[복호화]

암호화의 반대 과정.



우선 암호화에는 대칭형(DES)과 비대칭형(RSA)이 있어요.

설명하기가 어려운 부분이 있어서 네이버 지식백과를 참고해서 설명해드릴게요~


대칭형 암호화 방식의 비밀키 암호화기법(DES)비대칭형 암호화 방식의 공개키 암호화 기법(RSA)이 있다. 비밀키 암호화 기법은 동일한 키로 암호화와 복호화를 수행하는 방법으로 보안 유지와 키 관리에 어려움이 있으나 알고리즘이 간단해 암호화 속도가 빠르고 용량이 작아 경제적이다. 공개키 암호화 기법은 공개되는 공개키(public key)와 본인만 사용하는 비밀키(private key)로 구성되는 것으로 공개키와 비밀키를 별도로 관리하기 때문에 키 관리가 용이하며 암호화와 사용자 인증이 동시에 이뤄진다는 특징이 있다. 이는 전자 문서의 디지털서명, 부인봉쇄에 사용된다. 그러나 알고리즘이 복잡해 속도가 느리다는 단점을 가지고 있다.

[네이버 지식백과] 암호화 [暗號化, encryption] (시사상식사전, 박문각)



DES기법 기초 및 중급 암호화 강좌에서 아주 적절한 예라고 생각해서ASCII 코드를 이용한 대칭기법 암호화를 강좌 하겠습니다 ㅎㅎㅎ


혹시라도 아스키코드(ASCIIcode)에 대해서도 모르시는 분들을 위해 조그만 설명을 드리자면,
 American Standard Code for Information Interchange 의 약자로서정보 교환용으로 미국에서 만든 표준 코드입니다.ASCII 코드 표

대문자, 소문자, 숫자, 특수기호, 제어정보등을 포함하는 8개의 비트 코드로 구성이 되며그 중 일곱개의 비트는 코드화되어 있는 문자세트,한 개는 패리티비트(에러 검사용)로 사용 됩니다~ 
뭔소린지 모르겠고, 그냥 암호화 하는 방법이나 가르쳐 달라구요? 그럼 본론으로 들어가볼까요?

[원리 알고리즘]

"Hello~? 무꼬의 블로그입니다!!!" 라는 문자열을 암호화 할 때.
1. 우선 해당 문자열의 길이를 구합니다.(Hello~? 무꼬의 블로그입니다!!! 는 길이가 20)
2. 문자열에서 n번째 글자를 따옴(첫번째부터 문자열길이 까지.)(첫번째 글자인 'H'를 따옴)
3. n번째 글자를 ASCII코드화(숫자화) 시킵니다.('H'를 ASCII코드화 시키면 '72'가 됨.)
4. 암호화 할 대칭 키(Key)만큼 해당숫자에서 뺌.(무꼬는 1을 뺄것임! 72 - 1   1의 데미지를 입었다!!!  71이 됨.더해도 상관은 없음 하지만 복호화 할때는 반대 작업이 필요하니 복호화 할땐거꾸로 빼줘야 겠죠?)
5.이제 이 숫자를 다시 문자화 시켜줌.('H'는 'G'라는 숫자가 되었다!!)
6. 이제 다시 2번으로 돌아가서 두번째, 세번째 문자를 차례로 위의 방법대로 진행합니다.그럼 해보진 않았지만 앞의 'Hello~?'만 보면 'Gdkkp}>' 라는 알수 없는 문자열로 변형 되어 있겠죠?(※한글은 더 복잡하게 알수없게 바뀝니다.)



이제 코딩을 보시죠.


[VB 코딩] 

 EnCoding(문자열)

'출처를 밝히지 않고 퍼갈수 없습니다. 출처를 밝히세요.'출처 무꼬's Art-Life  http://art-life.tistory.comFunction EnCoding(ByVal Input_Str AString'Input_Str:문자열을 받을 변수 Dim Len_Str As Double '문자열의 길이값을 저장할 변수Dim Result As String '결과값을 받을 변수
Dim
Temp_Str As String '임시로 문자를 받을 변수Len_Str = Len(Input_Str) '1. 해당문자열의 길이를 구합니다.
for As Double = 0 to Len_Str - 1 Temp_Str =  Mid(Input_Str,n,1)   '2. 문자열에서 n번째 글자를 따옵니다.'3. n번째 글자를 ASCII코드화(숫자화) 시키고(Asc) 4. 대칭 키 만큼 뺌!(-1) 5. 그리고 다시 문자화 시켜줌 (Chr) Temp_Str = Chr(Asc(Temp_Str) - 1Result &= Temp_Str '5.Next nMsgBox Result '메세지창으로 띄워줌. 혹은 EnCoding = Result 를 써저 재귀함수로 만들어주어도! ㅎㅎ



처음 하시더라도 위에 원리를 보시고 코딩을 분석하시면 되게 쉬울거에요.


자 그럼 복호화는 어떻게 하냐구요?

똑같아요.

다만 아까 대칭 키를 입력할때 빼거나, 더했을 텐데 (저는 -1 을 했죠 ㅎㅎ)

그 반대로 해주는 거죠.

암호화할 때 - 1 을 했다면 복호화 때는 + 1

- 2 를 했다면 복호화 할때는 + 2 를 해주면 된다는 거죠.


그럼 뭐 볼것도 없지만 복호화 코딩도 한번 보실까요?

 DeCoding(문자열)

'출처를 밝히지 않고 퍼갈수 없습니다. 출처를 밝히세요.'출처 무꼬's Art-Life  http://art-life.tistory.comFunction DeCoding(ByVal Input_Str AString'Input_Str:문자열을 받을 변수Dim Len_Str As Double '문자열의 길이값을 저장할 변수Dim Result As String '결과값을 받을 변수 
Dim 
Temp_Str As String '임시로 문자를 받을 변수Len_Str = Len(Input_Str) '1. 해당문자열의 길이를 구합니다.
for As Double = 0 to Len_Str - 1 Temp_Str =  Mid(Input_Str,n,1)   '2. 문자열에서 n번째 글자를 따옵니다.Temp_Str = Chr(Asc(Temp_Str) + 1)  '이 부분만 다르죠 ㅎㅎResult &= Temp_Str '5.Next nMsgBox Result '메세지창으로 띄워줌. 혹은 DeCoding = Result



이해 하셨으리라 믿겠습니다 ㅎㅎ
아 혹시나 궁금한점이 있으시거나,모르겠다 하시면 댓글을 달아주시면 최대한 빠른 시일 내에 답해드리도록 하겠습니다 ㅎㅎ



그럼 즐프로그래밍 하세요~ 이상 무꼬였습니다. ( p.s - 하트 한번 눌러주세요 ㅎㅎ)

반응형

+ Recent posts