2013-04-19 1 views
0

J'ai eu besoin de générer guid dans C, Comment peut-on générer guid (http://en.wikipedia.org/wiki/Globally_unique_identifier) dans libc. J'ai besoin de générer des guids au hasard.Existe-t-il un meilleur moyen de générer guid dans gcc

+0

Qu'est-ce qui prête à confusion sur la spécification sur wikipedia? 'libc' a une fonction' random() 'qui génère quelque chose de 0 à MAXINT. Vous pouvez l'utiliser pour générer des octets aléatoires en le modulant par la taille maximale d'un octet, voire en le divisant. Cela ne garantira pas un caractère aléatoire particulièrement bon mais suffisant pour tout ce qui n'est pas trop sensible. Une fois que vous avez les octets, il vous suffit de suivre les spécifications dans wikipedia – rliu

+0

@roliu peut-il garantir l'unicité partout – Kajal

+2

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

Répondre

2

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

uuid_generate_time_safe - créer une nouvelle valeur UUID unique, Synopsis

#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 

La fonction uuid_generate crée un nouvel identifiant universel unique (UUID). L'uuid sera généré sur la base d'un caractère aléatoire de haute qualité à partir de/dev/urandom, si disponible. S'il n'est pas disponible, alors uuid_generate utilisera un algorithme alternatif qui utilise l'heure actuelle, l'adresse MAC Ethernet locale (si disponible) et les données aléatoires générées à l'aide d'un générateur pseudo-aléatoire. La fonction uuid_generate_random force l'utilisation du format UUID tout-aléatoire, même si un générateur de nombres aléatoires de haute qualité (c'est-à-dire,/dev/urandom) n'est pas disponible, auquel cas un générateur pseudo-aléatoire sera substitué. Notez que l'utilisation d'un générateur pseudo-aléatoire peut compromettre l'unicité des UUID générés de cette manière.

Questions connexes