uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe
- einen eindeutigen UUID-Wert erzeugen
#include <uuid.h>
void uuid_generate(uuid_t Ausgabe);
void uuid_generate_random(uuid_t Ausgabe);
void uuid_generate_time(uuid_t Ausgabe);
int uuid_generate_time_safe(uuid_t Ausgabe);
void uuid_generate_md5(uuid_t Ausgabe, const uuid_t
ns , const char *Name, size_t
Länge );
void uuid_generate_sha1(uuid_t Ausgabe, const uuid_t
ns , const char *Name, size_t
Länge );
Die Funktion
uuid_generate() erzeugt einen neuen universellen eindeutigen
Bezeichner (UUID). Diese UUID wird basierend auf qualitativ hochwertigen
Zufallsdaten aus
getrandom(2),
/dev/urandom oder
/dev/random erzeugt, sofern verfügbar. Falls dies nicht
verfügbar ist, dann verwendet
uuid_generate() einen alternativen
Algorithmus, der die aktuelle Zeit, die lokale Ethernet-MAC-Adresse (falls
verfügbar) und mit einem Pseudo-Zufallsgenerator erzeugte Zufallsdaten
verwendet.
Die Funktion
uuid_generate_random() erzwingt die Verwendung des
vollständig zufallsbasierten UUID-Formats, selbst wenn kein qualitativ
hochwertiger Zufallszahlengenerator zur Verfügung 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 verfügbar). Dieser Algorithmus war früher der
Standard zur Erzeugung von UUIDs, aber aufgrund der Einbeziehung der
Ethernet-MAC-Adresse könnten Informationen darüber nach
außen gelangen, wann und wo die UUID erzeugt wurde. Dies kann in
einigen Anwendungen zu Datenschutzproblemen führen, daher verwendet die
Funktion
uuid_generate() nur dann diesen Algorithmus, wenn keine
qualitativ hochwertige Zufallsdatenquelle zur Verfügung steht. Um die
Eindeutigkeit der UUIDs gleichzeitig laufender Prozesse zu
gewährleisten, verwendet die UUID-Bibliothek einen globalen
Uhrstatuszähler (sofern der Prozess über die nötigen
Rechte verfügt, exklusiv auf diese Datei zugreifen zu können)
und/oder den Daemon
uuidd(8), falls dieser bereits läuft oder
vom Prozess aufgerufen werden kann (sofern dieser installiert ist und der
Prozess über die nötigen Rechte verfügt, ihn
auszuführen). Sollte keiner der beiden Synchronisationsmechanismen
verwendbar sein, wäre es theoretisch möglich, 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() ähnelt
uuid_generate_time(), mit dem Unterschied, dass sie einen Wert
zurückgibt, 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 willkürliche
Binärzeichenkette bereitstellt. Die UUIDs sind konform zu den Versionen
3 und 5 von
RFC-4122 <
https://tools.ietf.org/html/rfc4122>.
Die neu erzeugte UUID wird an dem Speicherort zurückgegeben, auf den
Ausgabe zeigt.
uuid_generate_time_safe() gibt 0 zurück,
wenn die UUID auf sichere Art erzeugt werden konnte, anderenfalls -1.
Diese Bibliothek erzeugt UUIDs, die zu OSF DCE 1.1 kompatible sind, und
Hash-basierte UUIDs V3 und V5, die kompatibel sind zu
RFC-4122
<
https://tools.ietf.org/html/rfc4122>.
Theodore Y. Ts’o
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)
Verwenden Sie zum Melden von Fehlern das Fehlererfassungssystem auf
<
https://github.com/util-linux/util-linux/issues>.
libuuid ist seit Version 2.15.1 Teil des Pakets util-linux, welches
heruntergeladen werden kann von:
Linux Kernel Archive
<
https://www.kernel.org/pub/linux/utils/util-linux/>.
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario
Blättermann <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer