2013-04-19 17 views
0

C에서 GUID를 생성해야한다는 요구가 있습니다. libc에서 guid (http://en.wikipedia.org/wiki/Globally_unique_identifier)를 어떻게 생성 할 수 있습니까? guids를 무작위로 생성해야합니다.gcc에서 guid를 생성하는 더 좋은 방법이 있습니까

+0

wikipedia의 사양을 혼동시키는 것은 무엇입니까? 'libc'는 0에서 MAXINT까지를 생성하는'random()'함수를 가지고 있습니다. 이를 사용하여 바이트의 최대 크기로 변조하거나 심지어 나눠서 임의의 바이트를 생성 할 수 있습니다. 이것은 특히 좋은 임의성을 보장하지는 않지만 너무 민감하지 않은 것에 충분합니다. 바이트를 받으면 그냥 위키 백과의 사양을 따릅니다. – rliu

+0

@roliu – Kajal

+2

전체에서 독창성을 보장 할 수 있습니까? http://linux.die.net/man/3/libuuid? – Duck

답변

2

계속 : 참고 : http://linux.die.net/man/3/uuid_generate

uuid_generate_time_safe - 시놉시스

#include <uuid/uuid.h> 
void uuid_generate(uuid_t out);void uuid_generate_random(uuid_t out);void 
uuid_generate_time(uuid_t out);int uuid_generate_time_safe(uuid_t out); 
Description 

uuid_generate 함수가 새로운 UUID (Universally Unique Identifier)를 생성하는 새로운 고유 UUID 값을 생성한다. uuid는 가능한 경우/dev/urandom의 고품질 임의성을 기반으로 생성됩니다. 사용할 수없는 경우 uuid_generate는 현재 시간, 로컬 이더넷 MAC 주소 (사용 가능한 경우) 및 의사 임의 생성기를 사용하여 생성 된 임의의 데이터를 사용하는 대체 알고리즘을 사용합니다. uuid_generate_random 함수는 고품질 난수 생성기 (즉,/dev/urandom)를 사용할 수없는 경우에도 의사 랜덤 생성기가 대체 될 경우에도 모든 무작위 UUID 형식을 사용합니다. 의사 랜덤 생성기를 사용하면 이러한 방식으로 생성 된 UUID의 고유성이 손상 될 수 있습니다.