Qu'est-ce qu'un GUID ? — Structure, versions et unicité expliquées
2026-05-24
Tags : Windows · GUID · Tutoriel · QuickGUID
Si vous developpez sous Windows, vous l'avez forcement deja croise — une chaine de caracteres hexadecimaux qui ressemble a du charabia :
6B29FC40-CA47-1067-B31D-00DD010662DAPeut-etre dans le registre, dans un fichier de configuration, dans des logs, ou au milieu d'un message d'erreur. Vous savez que ca s'appelle un GUID, et vous savez aussi que "c'est sense etre unique". Mais vous ne vous etes peut-etre jamais serieusement pose la question : qu'est-ce que c'est exactement ? Pourquoi cet aspect ? Et pourquoi ca ne se repete jamais ?
C'est exactement de cela dont nous allons parler aujourd'hui.
UUID et GUID : deux noms pour la meme chose
Commencons par un fait que beaucoup ignorent : GUID et UUID sont exactement la meme chose.
- UUID (Universally Unique Identifier) est le nom officiel, defini dans la RFC 4122.
- GUID (Globally Unique Identifier) est l'alias que Microsoft lui a donne.
C'est aussi simple que ca. UUID est le nom standard ; GUID est la denomination utilisee par Microsoft dans COM, l'API Windows, .NET et d'autres technologies. Le GUID que vous voyez sous Windows et l'UUID que vous voyez sous Linux sont, au fond, la meme chose.
Pour rester coherent, nous utiliserons principalement le terme GUID dans cet article — apres tout, nous parlons de developpement Windows.
La structure du GUID : ca a l'air chaotique, mais c'est tres organise
Un GUID standard ressemble a ca :
6B29FC40-CA47-1067-B31D-00DD010662DA8-4-4-4-12, soit 32 caracteres hexadecimaux au total (128 bits), separes par des tirets en 5 segments. On dirait du hasard, mais il y a une structure bien definie :
6B29FC40-CA47-1067-B31D-00DD010662DA
↑ ↑
VERSION VARIANTELa cle se trouve dans le premier caractere du troisieme segment et le premier caractere du quatrieme segment :
- Numero de version (Version) : Le premier caractere hexadecimal du troisieme segment indique quel algorithme a ete utilise pour generer le GUID.
1correspond a v1,4a v4 et7a v7. - Variante (Variant) : Le premier caractere hexadecimal du quatrieme segment indique a quelle specification standard le GUID se conforme. S'il commence par
8,9,AouB, il suit la RFC 4122 — c'est le cas de l'ecrasante majorite des GUIDs que vous rencontrez au quotidien.
La prochaine fois que vous verrez un GUID, jetez un oeil au premier caractere du troisieme segment et vous saurez s'il a ete genere en v1, v4 ou v7. C'est beaucoup plus instructif que ce que laisse supposer le premier regard.
Quelles versions de GUID existent vraiment ?
La specification UUID definit plusieurs versions, mais en pratique, trois seulement comptent reellement :
v1 : Horodatage + adresse MAC
Les GUID v1 sont generes en combinant l'horodatage actuel (precis a 100 nanosecondes pres) avec l'adresse MAC de la carte reseau.
Avantage : Naturellement triable par date de creation. Inconvenient : L'heure de generation est exposee, et l'adresse MAC est une information materielle — un vrai probleme en matiere de confidentialite et de securite. Un attaquant qui obtient un GUID v1 peut en deduire votre adresse MAC et l'instant exact de creation.
C'est pourquoi v1 est rarement utilise aujourd'hui, bien qu'on le retrouve encore dans des systemes anciens.
v4 : Purement aleatoire
v4 est la version la plus courante a l'heure actuelle. A l'exception des bits fixes de version et de variante, les 122 bits restants sont entierement remplis de nombres aleatoires.
Pas d'horodatage, pas d'information materielle — l'unicite repose uniquement sur le hasard. Simple et redoutablement efficace.
Ce que generent new Guid(), uuid.uuid4() ou crypto.randomUUID() dans votre projet est presque toujours du v4.
v7 : Le nouveau venu triable par temps
v7 a ete officiellement integre a la norme en 2024. Il utilise les 48 premiers bits pour stocker un horodatage en millisecondes et remplit le reste avec des nombres aleatoires.
Pourquoi creer v7 ? Parce que v4, meme s'il est excellent, est completement aleatoire et ne peut pas etre trie chronologiquement. Pour les bases de donnees, c'est un probleme :
- Quand on utilise des GUIDs comme cle primaire avec v4, l'ordre d'insertion et l'ordre de l'index ne correspondent pas, ce qui provoque des fractionnements frequents de l'arbre B+ et degrade les performances d'ecriture.
- Avec v7, la premiere moitie etant un horodatage, l'ordre est naturellement croissant. L'ordre d'insertion et l'ordre de l'index sont largement coherents — de bien meilleures performances d'ecriture.
Si votre projet utilise des GUIDs comme cles primaires en base de donnees, v7 est un meilleur choix que v4.
"Les GUIDs ne se repetent jamais" — mais la affirmation virale du Web se trompe
A chaque fois qu'on parle de l'unicite des GUIDs, quelqu'un demande : et si deux se ressemblent ?
Il y a une affirmation qui circule sur Internet : "La probabilite de collision des GUIDs v4 est si faible que meme en generant un milliard par seconde pendant un milliard d'annees, il n'y aurait aucune collision." Rassurant, n'est-ce pas ?
Sauf que mathematiquement, c'est faux.
Ou est l'erreur ? Le paradoxe des anniversaires
L'affirmation tombe dans un piege classique de l'intuition : le paradoxe des anniversaires.
Vous connaissez peut-etre ce probleme : combien de personnes faut-il dans une salle pour que la probabilite que deux d'entre elles partagent la meme date d'anniversaire depasse 50 % ? L'intuition dit qu'avec 365 jours, il en faut au moins 180.
En realite, il suffit de 23 personnes.
La raison : on ne verifie pas si une personne donnee est nee un jour precis, mais si n'importe quel couple parmi toutes les personnes partage la meme date d'anniversaire. Plus il y a de personnes, plus le nombre de couples augmente — et ce de maniere exponentielle.
Pour les GUIDs, c'est identique. Il ne s'agit pas de savoir si un GUID specifique coincide par hasard avec un autre, mais si parmi tous les GUIDs generes, n'importe quel couple entre en collision. Le nombre de combinaisons croit de maniere quadratique avec le total — bien plus vite que ce que l'intuition suggere.
La veritable chronologie des collisions
Si nous generons strictement a raison d'un milliard de GUIDs par seconde sans interruption et recalculons avec la formule du paradoxe des anniversaires :
- 10 ans : Probabilite de collision environ 1 %
- 33 ans : Probabilite de collision environ 10 %
- 86 ans : Probabilite de collision environ 50 %
Et un milliard d'annees ? A ce stade, les collisions seraient innombrables.
Peut-on etre rassure ?
Absolument. Les calculs ci-dessus supposent "un milliard par seconde, sans interruption" — en realite, aucune application n'atteint un tel volume.
Si, sur tout le cycle de vie de votre systeme, vous generation au total 100 billions de GUIDs (ce qui est deja un chiffre astronomique et disproportionne), la probabilite de collision n'est que de une sur un milliard.
Utilisez les GUIDs l'esprit tranquille.
Les frustrations quotidiennes avec les GUIDs
Aprres la theorie, revenons a la pratique. Les vrais points de douleur quand on travaille avec des GUIDs ne sont pas lies aux collisions, mais a ceci :
La generation est fastidieuse
Le guidgen.exe fourni avec Windows ne genere qu'un seul GUID a la fois. Dans le terminal ? PowerShell peut le faire : [guid]::NewGuid(). Mais si vous avez besoin de 50 GUIDs d'un coup pour des donnees de test ? Il faudra ecrire un script.
Le chaos des formats
Un meme GUID se presente tres differemment selon le langage et le contexte :
6B29FC40-CA47-1067-B31D-00DD010662DA // Format standard
6B29FC40CA471067B31D00DD010662DA // Sans tirets
{6B29FC40-CA47-1067-B31D-00DD010662DA} // Accolades (C#/COM)
urn:uuid:6B29FC40-CA47-1067-B31D-00DD010662DA // URN
aKXwnELGRYeysdADQClibto= // Base64Vous copiez un GUID depuis un log et vous devez le convertir au format de macro DEFINE_GUID en code C ? Il faut le reformatier manuellement.
L'extraction depuis du texte est penible
Un fichier de log contient des dizaines de GUIDs dissimines et vous voulez tous les trouver ? Scanner a l'oeil nu ou ecrire une expression reguliere ?
[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}Ca fonctionne, mais il faut a chaque fois verifier pour l'ecrire correctement.
La solution : QuickGUID
Tous ces points de douleur se reglent avec un seul outil. QuickGUID est une boite a outils GUID native Windows :
- Generation par lots de v4 ou v7, jusqu'a 1 000 a la fois
- Plus de 10 formats avec conversion en temps reel : standard, sans tirets, accolades, Base64, tableau d'octets C, macro
DEFINE_GUID... le tout avec apercu instantane - Extraction intelligente : collez un log ou du code source, et tous les GUIDs sont automatiquement identifies et convertis par lots
- Decorateur en direct : guillemets, suffixe, majuscules/minuscules — basculez globalement et le resultat est pret a copier
Entierement gratuit, 100% hors ligne.
Pour conclure
Les GUIDs font partie des infrastructures les plus discretes mais les plus fiables du developpement logiciel. 128 bits, sans coordination centrale, sans connexion Internet — et pourtant uniques a l'echelle mondiale. Ce design existe depuis plus de 30 ans et reste l'une des meilleures pratiques pour les identifiants dans les systemes distribues.
J'espere que cet article vous a aide a comprendre les "pourquois" derriere les GUIDs.