GUID
El GUID ( G lobally Unique Id entifier ) es un número pseudoaleatorio utilizado en la programación de software , para poder distinguir varios objetos. El tipo de GUID más conocido es el uso de UUID de Microsoft , ideado por Open Software Foundation , pero también hay otros usos, como el de XML .
Los GUID se utilizan principalmente en el Modelo de objetos componentes (COM) de Microsoft, pero también son populares en otros sistemas de software, como Oracle y Novell .
El GUID de Microsoft
El GUID se utiliza para identificar de forma exclusiva un componente de software COM en particular; de esta manera, dos versiones (potencialmente incompatibles) del mismo componente, incluso con el mismo nombre, pueden distinguirse por sus códigos GUID. Aunque el GUID no garantiza la unicidad efectiva, el número de combinaciones posibles (2 128 ) es tan elevado que evita la coincidencia entre dos códigos. Para dar una idea, considerando que en todo el universo observable hay 5 × 10 22 estrellas, a cada estrella individual se le podrían asignar 6,8 × 10 15 GUID diferentes.
Además de los componentes, los documentos y archivos de Office en formato de transmisión avanzada también se marcan a través de GUID . La mayoría de los GUID utilizados por diversas aplicaciones se encuentran en el registro de Windows .
Estructura
En la práctica, un GUID es un número de 128 bits (16 bytes ) en formato hexadecimal que puede ser:
3F 25 04 E0 4F 89 11 D3 9A 0C 03 05 E8 2C 33 01
Los GUID se escriben entre corchetes y se dividen en cinco bloques, uno de 4 bytes, tres de 2 bytes y uno de 6 bytes. En el ejemplo anterior tendríamos:
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
La notación es por tanto una secuencia formada por los siguientes grupos de caracteres, separados por un guión (-).
- Grupo 1 ( 8 caracteres )
- Grupo 2 ( 4 caracteres )
- Grupo 3 ( 4 caracteres )
- Dos elementos iniciales del grupo 4 ( 4 caracteres )
- Dos elementos restantes del grupo 4 ( 4 caracteres ) seguidos del grupo 5 ( 8 caracteres , para un total de 12 caracteres )
En la definición de una estructura apta para contener un GUID, en cualquier lenguaje de programación , la estructura más utilizada es la siguiente.
ESTRUCTURA GUID Fecha1 día datos2 dw Datos3 dw datos4 db 8 EXTREMOS DE LA GUÍA
En C , la definición contenida en la biblioteca guiddef.h es esta:
estructura typedef _GUID {
Data1 largo sin firmar;
datos cortos sin firmar2;
Datos cortos sin firmar3;
carácter sin firmar Data4 [8];
} GUID;
En .NET Framework , hay una clase especial para crear GUID, System.Guid
Algoritmo
El algoritmo especificado por OSF y utilizado por Microsoft para generar GUID ha sido objeto de críticas. De hecho, este algoritmo utilizaba como punto de partida las direcciones MAC de las tarjetas de red de los usuarios que lo generaban. La ventaja de este método era la certeza absoluta de la unicidad del GUID generado (porque no hay dos direcciones MAC iguales), pero de esta manera era posible rastrear un GUID hasta la computadora que lo generó, con posibles consecuencias en privacidad y seguridad.
Luego de que saliera a la luz este problema, Microsoft cambió el algoritmo (implementado en la API UuidCreate ) para que ya no dependa de las direcciones MAC. Todavía es posible generar voluntariamente GUID dependientes de la dirección MAC utilizando la API UuidCreateSequential.
Para saber si se generó un GUID con la primera o segunda versión del algoritmo, es necesario referirse al primer dígito del tercer bloque. Entonces, en el ejemplo anterior
{3F2504E0-4F89-1 1D3-9A0C -0305E82C3301}
Si este dígito es un 1, como en este caso, el código es generado por la primera versión; viceversa, si el dígito es un 4, lo genera el segundo.
Subtipos
Los GUID utilizados en los COM pueden ser de diferentes tipos, según su función:
- IID - identificadores de interfaz
- ClsID - identificadores de clase (contenidos en HKEY_CLASSES_ROOT \ CLSID)
- LibID - identificadores de biblioteca
- CatID - identificadores de categoría (la presencia de un CATID en una clase identifica esa clase como perteneciente a una determinada categoría)
Los DCOM han introducido otros subtipos
- AppID - identificadores de aplicaciones
- MID - identificadores de máquina
- IpID - identificadores de puntero de interfaz
- CID: identificadores aleatorios que se refieren a una sesión RPC
- OID - identificadores de objetos
- OxID - identificadores de exportadores de objetos
- SetID - identificadores de un grupo de objetos
Dos GUID idénticos de diferentes subtipos pueden coexistir sin problemas en un mismo sistema, pero no se permite la existencia de dos GUID idénticos de un mismo subtipo.
GUID en XML
También hay GUID dentro de algunas versiones de RSS , marcados precisamente por la etiqueta guid, sin embargo, no tienen nada que ver con los GUID COM de Microsoft. De hecho, dentro de RSS, los GUID pueden ser cualquier número, cualquier cadena o URL , válido o no. Por lo general, usamos la URL única de la publicación como GUID.
Enlaces externos
- Norma Internacional “Generación de registro de Universally Unique Identifiers (UUIDs) y su uso como componentes ASN.1 Object Identifier” (Rec. UIT-T X.667 | ISO/IEC 9834-8, técnicamente compatible con IETF RFC 4122 )
- Generador de UUID/GUID en línea , en famkruithof.net .
- Extensión de Firefox de generación de GUID
- Sintaxis y semántica de la variante DCE de UUID , en opengroup.org .
- UUID: generación de UUID (o GUID) en Java , en johannburkard.de .
- Generador de UUID/GUID en línea (inglés, húngaro) , en nowan.hu .