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