반응형

현재 비주얼 베이직으로 간단한 암호화 프로그램 하나 제작 했습니다.


현재 열기/저장 기능은 수행되지 않고, 기능만 넣어 두었습니다.



ASC En'Decoder.exe



문자를 아스키코드로 변환한뒤 설정된 키값으로 가감하여 다시 문자열로 뿌려주는 프로그램입니다.


숨기고 싶은 문자나 글을 해당 프로그램으로 암호화 시켜놓으시고

메모장에 저장해두셨다가 나중에 꺼내 보실때는

복호화할 내용에 넣고, 복호화하기 하면

원래 내용이 보여집니다.


암호화할 내용에 내용을 입력후


F1키 혹은 암/복호화 -> 암호화 탭을 클릭하시면


아래 처럼 뜹니다.


반대로

복호화할 내용에

받값슷닉닥!묵꼭읜!븜록극잇닉닥/

를 입력하고, F2키 혹은 암/복호화 -> 복호화 탭을 클릭하시면



...과연 뭐가 나올까요?

정답을 댓글로 달아주시고, 메일주소 알려주시면

해당 프로그램의 코딩 내용을 전달해 드리겠습니다~!


아, 참고로 복호화 할때 키값은 1입니다.



코딩 내용은 추후 어느정도 시간이 지난 후 포스팅에 공개 하겠습니다 ㅎㅎ

반응형
반응형

 

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

오늘은 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