Gültige v4-UUIDs in PHP generieren
Das richtige Format für die Generierung gültiger v4-UUIDs in PHP zu bestimmen, kann eine Herausforderung sein. Eine UUID (Universally Unique Identifier) muss einem bestimmten Muster entsprechen: „xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx“, wobei „y“ entweder eine 8, 9, A oder B darstellt.
Bestehende Lösung und Einschränkungen
Ein Lösungsversuch besteht darin, die UUID in Komponenten zu zerlegen und für jede eine Zufallszahlengenerierung zu verwenden Abschnitt. Der „y“-Wert wird jedoch nicht richtig eingestellt.
Korrektur der Funktion
Um dieses Problem zu beheben, müssen wir bestimmte Bitmanipulationen an den generierten Daten vornehmen . Gemäß RFC 4122 – Abschnitt 4.4 müssen die folgenden Bits geändert werden:
Aktualisierte Funktion
Hier ist die aktualisierte PHP-Funktion, die gültige v4-UUIDs generiert:
function uuidv4() { $data = random_bytes(16); $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100 $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10 return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); }
Zufällige Generierung Daten
Um ausreichend zufällige Daten zu generieren, wird empfohlen, beides zu verwenden openssl_random_pseudo_bytes() oder random_bytes() (für PHP 7 und höher). Für ältere PHP-Versionen kann openssl_random_pseudo_bytes() verwendet werden.
Das obige ist der detaillierte Inhalt vonWie generiere ich gültige v4-UUIDs in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!