Guides Développement

Comment fonctionnent les UUID

La structure d'un UUID (bits de version et de variante), la signification de chaque version, pourquoi les UUID aléatoires entrent presque jamais en collision (avec les chiffres du paradoxe des anniversaires) et comment les générer et les décoder.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Un UUID (identifiant unique universel, aussi appelé GUID) est une étiquette de 128 bits écrite en 32 chiffres hexadécimaux selon le motif 8-4-4-4-12. N'importe qui peut en générer un sans registre central. Le format est défini par la RFC 9562. Créez-les avec le générateur d'UUID, lisez-les avec le décodeur d'UUID et choisissez entre les types courants dans UUID v4 vs UUID v7 vs ULID. L'entrée du glossaire est UUID.

Lire un UUID

  • Exemple : f47ac10b-58cc-4372-a567-0e02b2c3d479.
  • La version est le premier chiffre hexadécimal du troisième groupe (ici 4 : aléatoire).
  • La variante se lit dans le premier chiffre du quatrième groupe : 8, 9, a ou b désigne la disposition standard (ici a).
  • Deux valeurs spéciales existent : l'UUID nul 00000000-0000-0000-0000-000000000000 et l'UUID maximal ffffffff-ffff-ffff-ffff-ffffffffffff.

Les versions

Version Contenu Remarques
1 Horodatage (ticks de 100 ns depuis 1582-10-15) + ID de nœud Hérité ; l'ID de nœud peut divulguer une adresse MAC
3 Hachage MD5 d'un espace de noms et d'un nom Même entrée, même UUID ; à éviter pour du neuf
4 122 bits aléatoires Le choix par défaut ; ne révèle rien
5 Hachage SHA-1 d'un espace de noms et d'un nom Même entrée, même UUID ; ID stables pour des noms
6 v1 avec l'horodatage réordonné pour se trier Compatibilité avec v1
7 Heure Unix de 48 bits en ms + aléatoire Se trie par date de création ; adaptée aux clés de bases de données
8 Personnalisée : disposition définie par le fournisseur Usage expérimental ou privé

Quelle probabilité de collision ?

Un UUID version 4 porte 122 bits aléatoires, soit environ 5,3 × 10^36 valeurs. D'après le paradoxe des anniversaires, il faudrait environ 2,7 × 10^18 UUID pour avoir 50 % de chances d'un seul doublon : à un milliard par seconde, cela prend environ 86 ans.

Conseils pratiques

  • Les UUID fondés sur un nom sont reproductibles : l'UUID version 5 de example.com dans l'espace de noms DNS est toujours cfbff0d1-9375-5685-968c-48ce8b15ae17.
  • Un UUID est un identifiant, pas un secret. Ne l'utilisez pas comme jeton de réinitialisation de mot de passe ou clé d'API sauf s'il provient d'une source aléatoire sûre, et préférez des jetons plus longs pour les secrets.
  • Stockez les UUID sur 16 octets (une colonne uuid native), et non en texte de 36 caractères, quand c'est possible.
  • Utilisez la v7, ordonnée dans le temps, pour les nouvelles clés primaires afin de ne pas disperser les insertions dans l'index.

Essayez ces outils

Voir aussi

  • Glossaire UUID
    Un UUID (identifiant universel unique) est une valeur de 128 bits, écrite sur 36 caractères, unique en pratique sans aucun registre central.
  • Comparatif UUID v4 vs UUID v7 vs ULID
    UUID aléatoires, UUID ordonnés dans le temps et ULID comparés : disposition des bits, longueur du texte, tri.
  • Glossaire Horodatage Unix (Unix timestamp)
    Un horodatage Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC (l'« époque Unix »).
  • Glossaire Hachage (hash)
    Un hachage (hash) est l'empreinte de longueur fixe qu'une fonction de hachage calcule à partir d'une entrée ; même entrée, même hachage.
  • Guide Comment fonctionne le hachage
    Ce que fait une fonction de hachage, l'effet avalanche avec une vraie sortie SHA-256, quels algorithmes restent sûrs.
  • Guide Comment fonctionnent le hasard et les tirages équitables
    Hasard pseudo-aléatoire et sûr, biais du modulo, pourquoi les mélanges naïfs sont biaisés, séries et probabilités exactes de loterie.

Questions fréquemment posées

En théorie oui, mais un UUID version 4 contient 122 bits aléatoires ; il faudrait donc environ 2,7 × 10^18 UUID pour avoir 50 % de chances d'une seule collision. En pratique, un mauvais générateur de nombres aléatoires est un risque plus grand que le hasard.

AdSense Placeholder
Slot: footer_leaderboard