이름이 거창하죠... 선중이 계발한..^^
이강좌를 보시기전 반드시 로그인강좌 고급 부분의 암호화 부분을 보신후 읽어주시기 바랍니다.. 그러시면 좀 더 빠른 이해를 하실수있을 것입니다.. 그리고 이전에 설명했던 중복 부분에 대해서는 그냥 대충 대충 설명하겠습니다..
이계발 버젼은 솔직히 암호화 구조를 알고있다고해도 풀이한다는건 거의 불가능합니다.. 이유인 즉 각 데이타별로 별도의 코드로 저장되고 그 코등에 사용자가 지정한 코드를 삽입하는 방식이기때문입니다..
Ex) Data 1 2 3 4 5 6 Pw 1 2 3 4 위처럼 있다면
Data 1 2 3 4 5 6 Pw 1 2 3 4 1 2 암호화 2 4 6 8 6 8
과 같은식으로 저장됩니다.. 즉 암호화 의 일관성이 없기때문에 암호화를 지정 페스워드 없이 복구한다는건 불가능합니다.
그럼 간단히 소스를 보면서 설명을 드리겠습니다..[소스자료실 소스 참고]
/////////////////////////////// 사용자함수0 ///////////////////////////////////
-------------------------------[ 암호화 ]----------------------------------------- 문자함수:암호화(문자:본문,암호); //<----- 함수 선언부[원문과,암호를 문자로 받는다 ----------------------------------------------------------------------------------
실수:수,반수,암수[100]; // <--- 암수[100]은 암호를 99자까지 설정하도록 해준것이다 문자:문; 본문:=공백제거(본문); // <--- 입력받은 문자에 좌우 공백 제거 //---[1]------ 반복{ 암수[반수]:=문수(문자복사(암호, 반수, 1)); // <--- 암호를 코드로 변환하여 배열에 반수:=반수+1; // 지정한다 } 까지(문자길이(암호)<반수); 반수:=0; // <--- 암호의 길이만큼 반복하도록 지정 //-------------
수:=1;
//----[2]----- // ---- 아래 /는 각코드의 구분 반복{ // v 을 두기 위함입니다. 문:=문+수를문(문수(문자복사(본문, 수, 1))+암수[반수])+"/"; //<-- 본문을 코드화하여 수:=수+1; // 순차적으로 암호화 반수:=반수+1; // 결합한다. 만일(반수>문자길이(암호)){ 반수:=0; } //<-- 암호의 끝이돼면 다시 처음으로 돌려준다 } 까지(문자길이(본문)< 수); // <-- 본문의 길이만큼 반복하도록 설정 //-------------- 결과:=문;
------------------------------------------------------------------------------------
간단히 실행예를 봅시다
"1234" 를 코드화 하면 "49 ,50 , 51,52" 가됩니다.. 1234가 암호라고 합시다.. 가나다라마 를 코드화하면 "176,161,179,170,180,217,182,243,184,182"가됩니다 "가~마"본문이라고 합시다.. 그럼 위 명령에서 [1]부분이 암호 1234를 다음과 같이 바꾸어 주는것입니다.. 암수[0] = 49 <----- 1을 코드화한것입니다.. 아래는 순서대로.. 암수[1] = 50 암수[2] = 51 암수[3] = 52 로 설정해주는것입니다..
그럼 위 명령에서 [2]는 본문"가~마"를 다음과 같이 해주는것입니다.. 176+암수[0] 161+암수[1] 179+암수[2] 170+암수[3] 암수의 끝부분이므로 다시 돌려서 암수[0]이 들어가도록 해준다.. 180+암수[0] . . . . 182+암수[1] 을 연산하여 다음 다음과 같이 출려해준다..
225/210/229/221/232/266/231/293/235/234/ <---- 이것이 암호화 된 문장이다.. 첫 문자는 176+암수[0] 즉 176+49 다 그러므로 225가된다..
그러 실행 명령을 볼까요..
문:=사용자함수0.암호화(원문 , 암호);
여기까지가 암호화 부분이었습니다..
/////중간 쉼타임//////////////////// /) /)/) //이번강좌 생각보다 어렵네요..ㅠㅠ // ( ')3(.. ) /////////////////////////////////// ----n--n-n---
그럼 계속 계속 복구화 부분으로 가볼까요...
그럼 복구는 위 과정을 반대로 하면돼겠죠..^^
Ex) Data 2 4 6 8 6 8 Pw 1 2 3 4 위처럼 있다면
암호화된문 2 4 6 8 6 8 Pw 1 2 3 4 1 2 <--- 암호화 된 문에서 페스워드를 빼준다.. Data 1 2 3 4 5 6
즉 암화 된 데이타에서 암호를 빼주는것입니다..
역시 위에서 말한것처럼 각 다윈별로 서로 다른 페스워드가 지정되기 대문에 지정페스워드 없이 복구는 불가능합니다..
그럼 소스를 보겠습니다..
/////////////////////////////// 사용자함수0 ///////////////////////////////////
-------------------------------[ 복호화 ]----------------------------------------- 문자함수:복호화(문자:암호문,암호); //<----- 함수 선언부[암호문과 암호를 문자로 받는다 ----------------------------------------------------------------------------------
실수:수,반수,위치,암수[100]; 문자:문,문1; 문1:=암호문;
반복{ 암수[반수]:=문수(문자복사(암호, 반수, 1)); 반수:=반수+1; } 까지(문자길이(암호)<반수); 반수:=0;
//---- 위 부분은 위 암호화 부분에서 설명했으므로 생략합니다.. -----//
반복{ 위치:=문자찾아("/",문1); // 코드의 끝을 찾는다 "/"를 검색 만일(위치=0){ 결과:=문;나가; } 아니면{ 문:=문+수문(문을수(문자복사(문1, 1, 위치-1),0)-암수[반수]); //<--코드화 된암호를 제거 문1:=문자삭제(문1,1,위치); } // 후 다시 문자로 돌려준다 수:=수+1; 반수:=반수+1; 만일(반수>문자길이(암호)){ 반수:=0;} } 까지(위치=100); 결과:=문;
------------------------------------------------------------------------------------
주석을 단 부분이왜는 위에서 설명한것과 모두 같은기능이다.. [[ 나머지 부분은 위 주석을 참고하세요...]
위에서 지정한 암호는 1234입니다.. 즉 1234를 코드화 하면 "49 ,50 , 51,52" 가됩니다 그리고 그것을 다음처럼 지정하겠죠..[위에서 설명했었듯...] 암수[0] = 49 암수[1] = 50 암수[2] = 51 암수[3] = 52
자 이것을 하씩 암호문에서 빼봅시다..
225/210/229/221/232/266/231/293/235/234/ 위에서 암호화 한것입니다..
그럼 위 명령에서 [2]는 본문"가~마"를 다음과 같이 해주는것입니다.. 225-암수[0] 210-암수[1] 229-암수[2] 221-암수[3] 암수의 끝부분이므로 다시 돌려서 암수[0]이 들어가도록 해준다.. 232-암수[0] . . . . 234-암수[1] 을 연산하여 다음 다음과 같이 출려해준다..
176,161,179,170,180,217,182,243,184,182 <---- 이것이 복구된 코드이다.. 첫 문자는 225-암수[0] 즉 225-49 다 그러므로 176가된다..
자 이코드를 다시 문로 바꾸려면 다음명령이 사용된다.. "수문" 이라는 명령이 이용되는다 이 명령은 아스키 코드를 문자료 표시해주는 명령이다..
문:=수문(176)+수문(161) --> 가 로 표시된다..
그럼 사용명령법을 볼까요..
문:=사용자함수0.복호화(암화된문,암호화 할때 지정한 암호);
역시 반환 문이기대문에 복호후 문이라는 곳에 반환하다..
어떻게 보변 복구 부분이 더 중요하다 위에 암호화 부분에서 다 설명을 했기때문에 더 설명할것이 없네요..^^
이번강좌는 어떠했는지 모르겠네요.. 조금이나마 유익했음 좋겠네요...
|