Outils pour utilisateurs

Outils du site


glossaire:guid

Table des matières

GUID

Globally Unique IDentifier

Un GUID (abréviation de l'anglais Globally Unique IDentifier) sert habituellement d'identifiant unique pour un composant logiciel, par exemple un plugin. Sa taille est de 16 octets, soit 128 bits, décomposés en:

  • 4 octets,
  • 3 groupes de 2 octets,
  • 6 octets.

Exemple: {3F2504E0-4F89-11D3-9A0C-0305E82C3301}

Ce terme est utilisé à la fois dans le monde Microsoft et dans le monde Unix (voir RFC 4122). Microsoft utilise le terme de CLSID (de l'anglais CLasS IDentifier) pour désigner le GUID de la classe d'un objet OLE, et le terme IID (de l'anglais Interface IDentifier) pour les interfaces implémentées par ces classes.

Sous Unix, on utilise le UUID.

Quatre versions ont été spécifiées par Microsoft :

  • version 1 : basée sur l’horloge de l'ordinateur et l’adresse MAC (avant Windows 2000),
  • version 2 : réservée (non utilisée en pratique),
  • version 3 : basée sur un nom, les différents champs sont produits à partir de ce nom,
  • version 4 : basée sur des nombres issus d’un générateur de nombres pseudo-aléatoires cryptographique (Windows 2000 et ultérieur).

Sur les 128 bits (dont 4 bits pour la version et 2 pour la variante), seuls 122 sont réellement aléatoires, ce qui fait quand même environ 5 × 1036 combinaisons possibles.

/**
 * rfc4122 version 4 compliant
 * rfc4122 section 4.4 : Algorithms for Creating a UUID from Truly Random or Pseudo-Random Number
 *   
 * http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
 */
function uuid()
{
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
    return v.toString(16);
  }).toUpperCase();
}

on-line: http://cyrille.giquello.fr/labs/uuid.html

glossaire/guid.txt · Dernière modification : 19/05/2012 00:18 de 127.0.0.1

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki