GUID
Le GUID ( G lobally Unique Id entifier ) est un nombre pseudo - aléatoire utilisé en programmation logicielle , pour pouvoir distinguer divers objets. Le type de GUID le plus connu est l'utilisation par Microsoft de l' UUID, conçu par l' Open Software Foundation , mais il existe également d'autres utilisations, comme celle dans XML .
Les GUID sont principalement utilisés dans le Component Object Model (COM) de Microsoft, mais ils sont également populaires dans d'autres systèmes logiciels, tels qu'Oracle et Novell .
Le GUID Microsoft
Le GUID est utilisé pour identifier de manière unique un composant logiciel COM particulier ; de cette manière, deux versions (potentiellement incompatibles) du même composant, même avec le même nom, peuvent être distinguées par leurs codes GUID. Bien que le GUID ne garantisse pas une unicité effective, le nombre de combinaisons possibles (2 128 ) est suffisamment élevé pour éviter une coïncidence entre deux codes. Pour donner une idée, considérant que dans tout l'univers observable il y a 5 × 10 22 étoiles, chaque étoile pourrait se voir attribuer 6,8 × 10 15 GUID différents.
En plus des composants, les documents et fichiers Office au format Advanced Streaming sont également marqués via GUID . La plupart des GUID utilisés par diverses applications sont contenus dans le registre Windows .
Structure
En pratique, un GUID est un nombre de 128 bits (16 octets ) au format hexadécimal qui peut être :
3F 25 04 E0 4F 89 11 D3 9A 0C 03 05 E8 2C 33 01
Les GUID sont écrits entre accolades et divisés en cinq blocs, un de 4 octets, trois de 2 octets et un de 6 octets. Dans l'exemple précédent nous aurions :
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
La notation est donc une séquence formée par les groupes de caractères suivants, séparés par un trait d'union (-).
- Groupe 1 ( 8 caractères )
- Groupe 2 ( 4 caractères )
- Groupe 3 ( 4 caractères )
- Deux éléments initiaux du groupe 4 ( 4 caractères )
- Deux éléments restants du groupe 4 ( 4 caractères ) suivis du groupe 5 ( 8 caractères , pour un total de 12 caractères )
Dans la définition d'une structure apte à contenir un GUID, dans n'importe quel langage de programmation , la structure la plus utilisée est la suivante.
STRUCTURE GUID Date1 jj Données2 dw Données3 dw Données4 db 8 FIN DU GUID
En C , la définition contenue dans la bibliothèque guiddef.h est celle-ci :
typedef struct _GUID {
Data1 long non signé ;
Data2 court non signé ;
Data3 court non signé ;
caractère non signé Data4 [8] ;
} GUID ;
Dans le framework .NET , il existe une classe spéciale pour créer des GUID, System.Guid
Algorithme
L' algorithme spécifié par l'OSF et utilisé par Microsoft pour générer des GUID a fait l'objet de critiques. En fait, cet algorithme utilisait comme point de départ les adresses MAC des cartes réseau des utilisateurs qui l'ont généré. L'avantage de cette méthode était la certitude absolue de l'unicité du GUID généré (car il n'y a pas deux adresses MAC identiques), mais de cette manière, il était possible de retracer un GUID jusqu'à l'ordinateur qui l'avait généré, avec des conséquences potentielles sur vie privée et sur la sécurité.
Après que ce problème soit apparu, Microsoft a modifié l'algorithme (implémenté dans l' API UuidCreate ) afin qu'il ne dépende plus des adresses MAC. Il est toujours possible de générer volontairement des GUID dépendants de l'adresse MAC à l'aide de l'API UuidCreateSequential.
Pour savoir si un GUID a été généré avec la première ou la deuxième version de l'algorithme, il faut se référer au premier chiffre du troisième bloc. Ainsi, dans l'exemple précédent
{3F2504E0-4F89-1 1D3-9A0C -0305E82C3301}
Si ce chiffre est un 1, comme dans ce cas, le code est généré par la première version ; inversement, si le chiffre est un 4, il est généré par la seconde.
Sous-types
Les GUID utilisés dans les COM peuvent être de différents types, selon leur fonction :
- IID - identifiants d'interface
- ClsID - identifiants de classe (contenus dans HKEY_CLASSES_ROOT \ CLSID)
- LibID - identifiants de bibliothèque
- CatID - identifiants de catégorie (la présence d'un CATID dans une classe identifie cette classe comme appartenant à une certaine catégorie)
Les DCOM ont introduit d'autres sous-types
- AppID - identifiants d'application
- MID - identificateurs de machine
- IpID - identificateurs de pointeur d'interface
- CID - identifiants aléatoires faisant référence à une session RPC
- OID - identificateurs d'objet
- OxID - identifiants de l'exportateur d'objets
- SetID - identifiants d'un groupe d'objets
Deux GUID identiques de sous-types différents peuvent coexister sans problème dans le même système, mais l'existence de deux GUID identiques du même sous-type n'est pas autorisée.
GUID en XML
Il existe également des GUID dans certaines versions de RSS , marqués précisément par la balise guid, mais ils n'ont rien à voir avec les GUID Microsoft COM. En fait, dans RSS, les GUID peuvent être n'importe quel nombre, n'importe quelle chaîne ou URL , valide ou non. En règle générale, nous utilisons l'URL unique de la publication comme GUID.
Liens externes
- Norme internationale "Génération d'enregistrement d'identifiants universels uniques (UUID) et leur utilisation en tant que composants d'identifiant d'objet ASN.1" (Rec. UIT-T X.667 | ISO / CEI 9834-8, techniquement compatible avec IETF RFC 4122 )
- Générateur UUID/GUID en ligne , sur famkruithof.net .
- Extension Firefox de génération de GUID
- Syntaxe et sémantique de la variante DCE des UUID , sur opengroup.org .
- UUID - Génération d'UUID (ou GUID) en Java , sur johannburkard.de .
- Générateur UUID / GUID en ligne (anglais, hongrois) , sur nowan.hu .