OpenSSL 라이브러리의 DES 사용중에 *ivec 란 무엇인가요?
글쓴이: litdream / 작성시간: 수, 2004/09/08 - 9:37오후
안녕하세요. OpenSSL lib 은 솔직히 처음사용해보고,
암호/복호에 너무 무지하다보니, 이런 기본적인 질문을 올립니다.
예를들어, <openssl/des.h> 을 보면
void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, long length, DES_key_schedule *schedule, DES_cblock *ivec, int enc);
1. 여기서 *ivec 란 무엇인가요?
2. 이름으로 보아선 벡터인데, 이것이 데이터 스트럭쳐의 vector 라면
여러개의 블록중의 첫번째 포인터일 가능성이 있을텐데, 그렇다면
나중에 모든 블록을 free() 해줘야 하나요?
3. 만약에 그렇다면 블록이 몇개인지는 단순히
strlen(output) / sizeof(DES_cblock) 이라고 할수 있는가요?
4. 사실, 그렇더래도, output 이라는 공간을 만들어서 보내주게 되는데,
굳이 ivec 를 받을 필요는 없지 않을듯 하지만, 그렇게 디자인 했을리는
없고, 분명히 이유가 있을텐데요.. 혹시 제가 놓치고 있는점은?
5. 아니면 아예 제가 지금 길을 잘못 잡고 있나요??
잘 부탁드립니다.
꾸뻑.
Forums:
입력 파라메터들중 포인터들은 다 이미 공간이 할당되어 있어야 합니다.
입력 파라메터들중 포인터들은 다 이미 공간이 할당되어 있어야 합니다.
ivec은 암호 모드상 필요한 겁니다. 블럭 암호들이 블럭단위로 암호화를 하는데 입력, 키, ivec을 조합으로 각기 다른 효과를 냅니다.
ivec의 크기는 키 크기, 해당 암호 알고리즘의 블럭크기에 일반적으로 같습니다.
apps/ 디렉토리 밑의 샘플들은 참고해서 사용하시면 되구요. 기본적으로 암호화 개념을 가지고 있어야 사용하는데 무리가 없을겁니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기