1. 형식
형식1) result= decode(enstr)
형식2) result= decode(enstr, destr)
형식3) result= decode(enstr, destr, instr)
2. 기능: Wel의 encode()함수로 암호화한 암호문을 해독하여 원문을 얻는다.
형식2)와 형식3)에서 인자 destr은 복호화 키를 의미하며, 인자 instr은
간접 복호화 키를 의미하고 원문을 암호화 할 때 사용한 값과 같아야 한다.
3. 설명
(1) 모든 인자는 문자열이며 수치일 때에는 문자열로 변환된다.
(2) 인자 enstr은 encode() 함수로 암호화된 암호문이어야 한다.
(3) 인자 destr은 encode() 함수로 암호화할 때 사용한 복호화 키이다.
(4) 형식1)은 복호화 키 없이 암호화 키로만 암호화 한것을 해독할 경우이다.
(5) 형식2)와 형식3)은 복호화 키를 사용하여 암호화 한것을 해독할 경우이다.
(6) 형식3)의 인자 instr은 간접 복호화 키를 의미하며 instr의 값을 변수로 하여
그 값을 복호화 키로 사용한다. 이것은 암호화 부분이나 복호화 부분이 있는
Wel 원시 프로그램이 노출이 될 경우에 복호화 키가 노출되기 때문에 보안상
복호화 키를 별도로 관리하려는 목적으로 사용한다. 간접 복호화 키의 변수
명(instr의 값)은 Wel 프로그램 또는 form의 변수명 작성 규칙을 무시할 수
있어 @pass와 같은 변수를 사용할 수 있다. 프로그램이나 form에서는 이와
같은 변수의 값을 반영할 수 없기 때문에 이러한 명칭을 사용하는 것이 보안
에 도움이 될 것이다. @pass와 같은 변수에 값을 대입하려면 listmerge()
함수를 form을 개방하지 않은 상태에서 실행하면 된다. ( 간접 복호화 키에
값을 대입하는 방법은 "/etc/wel.passwd"를 참고하면 된다 )
(7) 형식3)에서 destr과 instr의 값이 모두 있을 경우에 instr을 우선한다.
(8) 인자 enstr이 해독된 원문 문자열이 result에 돌려진다.
4. 사용예
str1= encode("seoul", "an"); str2= decode(str1);
printf(" 암호문: %-20s , 해독된 원문: %s\n", str1, str2);
str1= encode("seoul", "k"); str2= decode(str1);
printf(" 암호문: %-20s , 해독된 원문: %s\n", str1, str2);
str1= encode("seoul", "an", "pusan"); str2= decode(str1, "pusan");
printf(" 암호문: %-20s , 해독된 원문: %s\n", str1, str2);
------------------------------ [ 출력결과 ] ------------------------------
암호문: an6PeIHD.06FbYogf7w , 해독된 원문: seoul
암호문: kknOM7GbyNSsoe0iC , 해독된 원문: seoul
암호문: an0oLgDw9w08a1EE , 해독된 원문: seoul
|