UUID_GENERATE(3) Programmierhandbuch UUID_GENERATE(3) BEZEICHNUNG uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe - einen eindeutigen UUID-Wert erzeugen UBERSICHT #include 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); void uuid_generate_md5(uuid_t out, const uuid_t ns, const char *name, size_t len); void uuid_generate_sha1(uuid_t out, const uuid_t ns, const char *name, size_t len); BESCHREIBUNG Die Funktion uuid_generate() erzeugt einen neuen universellen eindeutigen Bezeichner (UUID). Diese UUID wird basierend auf qualitativ hochwertiger Zufalligkeit aus getrandom(2), /dev/urandom oder /dev/random erzeugt, soweit verfugbar. Falls dies nicht verfugbar ist, dann verwendet uuid_generate() einen alternativen Algorithmus, der die aktuelle Zeit, die lokale Ethernet-MAC-Adresse (falls verfugbar) und mit einem Pseudo-Zufallsgenerator erzeugte Zufallsdaten verwendet. Die Funktion uuid_generate_random() erzwingt die Verwendung des vollstandig zufallsbasierten UUID-Formats, selbst wenn kein qualitativ hochwertiger Zufallszahlengenerator (zum Beispiel /dev/urandom zur Verfugung steht. In letzterem Fall wird stattdessen ein Pseudo-Zufallsgenerator verwendet. Beachten Sie, dass ein solcher Pseudo-Zufallsgenerator die Eindeutigkeit der auf diese Weise erzeugten UUIDs kompromittieren kann. Die Funktion uuid_generate_time() erzwingt die Nutzung des alternativen Algorithmus, welcher die aktuelle Zeit und die lokale Ethernet-MAC-Adresse verwendet (sofern verfugbar). Dieser Algorithmus war fruher der Standard zur Erzeugung von UUIDs, aber aufgrund der Einbeziehung der Ethernet-MAC-Adresse konnten Informationen daruber nach aussen gelangen, wann und wo die UUID erzeugt wurde. Dies kann in einigen Anwendungen zu Datenschutzproblemen fuhren, daher verwendet die Funktion uuid_generate() nur dann diesen Algorithmus, wenn keine qualitativ hochwertige Zufalligkeitsquelle zur Verfugung steht. Um die Eindeutigkeit der UUIDs gleichzeitig laufender Prozesse zu gewahrleisten, verwendet die UUID-Bibliothek einen globalen Uhrstatuszahler (sofern der Prozess uber die notigen Rechte verfugt, exklusiv auf diese Datei zugreifen zu konnen) und/oder den Daemon uuidd(8), falls dieser bereits lauft oder vom Prozess aufgerufen werden kann (sofern dieser installiert ist und der Prozess uber die notigen Rechte verfugt, ihn auszufuhren). Sollte keiner der beiden Synchronisationsmechanismen verwendbar sein, ware es theoretisch moglich, dass zwei gleichzeitig laufende Prozesse die gleiche UUID ermitteln. Um herauszufinden, ob die UUID auf sichere Art erzeugt wurde, verwenden Sie uuid_generate_time_safe(). Die Funktion uuid_generate_time_safe() ahnelt uuid_generate_time(), mit dem Unterschied, dass sie einen Wert zuruckgibt, der anzeigt, ob einer der Synchronisationsmechanismen (siehe oben) verwendet wurde. Die UUID ist 16 Byte (128 Bit) lang, was etwa 3,4x10^38 eindeutige Werte ergibt (nach Carl Sagans Cosmos gibt es im Universum etwa 10^80 Elementarteilchen). Diese neue UUID kann unter allen auf dem lokalen System erstellten UUIDs und auch unter allen auf anderen Systemen in der Vergangenheit oder Zukunft erstellten UUIDs als hinreichend eindeutig betrachtet werden. Die Funktionen uuid_generate_md5() und uuid_generate_sha1() erzeugen eine mit MD5 und SHA1 gehashte (vorhersagbare) UUID, basierend auf einer wohlbekannten UUID, welche den Namensraum und eine willkurliche Binarzeichenkette bereitstellt. Die UUIDs sind zu den Versionen 3 und 5 von RFC-4122 konform. RUCKGABEWERT Die neu erzeugte UUID wird an dem Speicherort zuruckgegeben, auf den die Ausgabe zeigt. uuid_generate_time_safe() gibt 0 zuruck, wenn die UUID auf sichere Art erzeugt werden konnte, anderenfalls -1. KONFORM ZU Diese Bibliothek erzeugt UUIDs, die zu OSF DCE 1.1 kompatibel sind, und Hash-basierte UUIDs V3 und V5, die zu RFC-4122 kompatibel sind. AUTOREN Theodore Y. Ts'o SIEHE AUCH uuidgen(1), uuid(3), uuid_clear(3), uuid_compare(3), uuid_copy(3), uuid_is_null(3), uuid_parse(3), uuid_time(3), uuid_unparse(3), uuidd(8) FEHLER MELDEN For bug reports, use the issue tracker . VERFUGBARKEIT Die Bibliothek libuuid ist seit Version 2.15.1 Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv heruntergeladen werden kann. util-linux 2.41 2025-03-29 UUID_GENERATE(3)