Maison > développement back-end > tutoriel php > Comment générer des UUID v4 valides en PHP ?

Comment générer des UUID v4 valides en PHP ?

Patricia Arquette
Libérer: 2024-12-18 09:19:14
original
536 Les gens l'ont consulté

How to Generate Valid v4 UUIDs in PHP?

Générer des UUID v4 valides en PHP

Déterminer le format correct pour générer des UUID v4 valides en PHP peut être difficile. Un UUID (Universally Unique Identifier) ​​doit respecter un modèle spécifique : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx", où "y" représente soit un 8, un 9, un A ou un B.

Solution existante et limitations

Une solution tentée consiste à décomposer l'UUID en composants et à utiliser la génération de nombres aléatoires pour chaque section. Cependant, il ne parvient pas à définir correctement la valeur "y".

Correction de la fonction

Pour corriger ce problème, nous devons effectuer des manipulations de bits spécifiques sur les données générées. . Selon RFC 4122 - Section 4.4, les bits suivants nécessitent une modification :

  • time_hi_and_version (bits 4-7 du 7ème octet)
  • clock_seq_hi_and_reserved (bits 6 et 7 du 9ème octet) octet)

Fonction mise à jour

Voici la fonction PHP mise à jour qui génère des UUID v4 valides :

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));
}
Copier après la connexion

Génération aléatoire Données

Pour générer des données suffisamment aléatoires, il est recommandé d'utiliser soit openssl_random_pseudo_bytes() ou random_bytes() (pour PHP 7 et supérieur). Pour les anciennes versions de PHP, openssl_random_pseudo_bytes() peut être utilisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal