GUID 생성 : C++ 코드를 이용한 방법
프로그래밍 언어/C++2011. 10. 27. 03:17
서버와 클라이언트의 간단한 인증 소스가 필요해서 알아보던 중에 클라이언트 고유 ID가 뭐가 있을까 생각을 해봤는데 처음 생각한건 MAC 주소를 이용한 인증 방법이 있겠고, 다른것으로 GUID를 생성해서 GUID를 서버와 클라이언트의 간단한 인증으로 사용하려고 생각한 것이다
COM / ATL 코딩시에 GUID를 사용하게 되는데 GUID를 생성하기 위해서 guidgen.exe나 cuidgen.exe 툴을 이용해서 GUID를 얻을수 있는데, 그 툴의 모티브(?)가 되는 소스코드를 통한 방법이다... 해당 툴도 이 소스로 만들어졌으리라 생각된다. 소스는 몇줄 안된다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // 필요한 헤더와 라이브러리를 추가 #include "stdafx.h" #include <Rpc.h> #pragma comment(lib, "Rpcrt4.lib") int _tmain(int argc, _TCHAR* argv[]) { // UUID 변수 UUID id; // UUID를 하나 생성한다 if(RPC_S_OK != UuidCreate(&id)) id = GUID_NULL; // UUID 값을 문자열로 변경한다(0xab, 0x12... 이런식으로 되어있음) // UUID 변경시 주의점으로 유니코드로 생성되며 유니코드로 출력하지 않으려면 MBCS로 변경해줘야 된다 TCHAR szIID[129]; wchar_t wszIID[129]; // GUID에서 문자열로 변경한다(유니코드로 변경됨) int r = ::StringFromGUID2(id, wszIID, 128); // WBCS에서 MBCS로 변경(유니코드->멀티바이트) ::wcstombs(szIID, wszIID, 128); // 문자로 출력 cout << szIID << endl; return 0; } |
아래는 결과 화면
'프로그래밍 언어 > C++' 카테고리의 다른 글
Visual studio를 이용한 리소스 dll 생성 방법 (2) | 2011.10.27 |
---|---|
파일 경로(문자열)에서 확장자 얻기 (0) | 2011.10.27 |
ADO Connection Pool에 대하여 (0) | 2011.10.18 |
[해결] LIBCMT.lib error LNK 2005: MSVCRT.lib에 이미 정의되어 있습니다 (0) | 2011.05.05 |
zlib 라이브러리를 이용한 파일 압축 해제 클래스 작성 (1) | 2010.10.26 |