2013-04-19 2 views
0

У меня было требование генерировать guid в C, Как можно генерировать guid (http://en.wikipedia.org/wiki/Globally_unique_identifier) в libc. Мне нужно генерировать подсказки случайным образом.Есть ли лучший способ генерировать guid в gcc

+0

Что вводит в заблуждение спецификацию по википедии? 'libc' имеет' random() 'функцию, которая генерирует что-либо от 0 до MAXINT. Вы можете использовать его для генерации случайных байтов, модулируя его максимальным размером байта или даже разделяя. Это не гарантирует особенно хорошую случайность, но достаточную для чего-либо, что не слишком чувствительно. Как только у вас есть байты, вы просто следуете спецификации в wikipedia – rliu

+0

@roliu может ли она гарантировать уникальность на всем протяжении – Kajal

+2

http://linux.die.net/man/3/libuuid? – Duck

ответ

2

Cont: Ref: http://linux.die.net/man/3/uuid_generate

uuid_generate_time_safe - создать новое уникальное значение UUID Синопсис

#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). Uuid будет сгенерирован на основе высококачественной случайности из/dev/urandom, если таковой имеется. Если он недоступен, то uuid_generate будет использовать альтернативный алгоритм, который использует текущее время, локальный MAC-адрес Ethernet (если есть) и случайные данные, созданные с использованием псевдослучайного генератора. Функция uuid_generate_random заставляет использовать всеспособный формат UUID, даже если высококачественный генератор случайных чисел (т. Е./Dev/urandom) недоступен, и в этом случае будет заменен псевдослучайный генератор. Обратите внимание, что использование псевдослучайного генератора может скомпрометировать уникальность UUID, сгенерированных таким образом.

Смежные вопросы