GUID frente a UUID: terminología y antecedentes históricos
Los términos tienen su origen en ecosistemas diferentes.
- UUID (identificador único universal) se define en normas internacionales como RFC 4122 e ISO/IEC 9834-8.
- GUID (identificador único global) es el nombre que utiliza Microsoft para el mismo formato de identificador de 128 bits en Windows, COM y .NET.
La RFC 4122 establece explícitamente que los UUID también se conocen como GUID. La documentación de Microsoft confirma que sus identificadores siguen la misma estructura y reglas de generación.
Desde el punto de vista de las normas, no hay divergencias estructurales, la diferencia radica en la convención de nomenclatura y el contexto del ecosistema.
UUID y GUID: estructura interna y formato
Ambos identificadores comparten características básicas idénticas:
- 128 bits (16 bytes)
- Representados como 32 dígitos hexadecimales.
- Formato textual común: 8-4-4-4-12
Ejemplo:
550e8400-e29b-41d4-a716-446655440000
Campos estructurales
Un identificador estandarizado incluye:
- Componente basado en el tiempo o aleatorio
- Campo de versión
- Campo de variante
- Nodo adicional o bits aleatorios
El campo de versión determina cómo se generó el valor.
El campo de variante determina la compatibilidad con la familia de especificaciones.
Estos elementos existen independientemente de la terminología.
Diferencia entre GUID y UUID a nivel de especificación
Para evaluar la diferencia entre GUID y UUID, debemos examinar la alineación de las especificaciones.
La RFC 4122 define:
- Disposición de bits.
- Numeración de versiones.
- Codificación de variantes.
- Representación textual canónica.
La implementación de Microsoft se ajusta a estas reglas. Los sistemas Windows anteriores incluían variantes de compatibilidad, pero la generación moderna de GUID cumple con los requisitos de la RFC.
Versiones definidas por RFC 4122
|
Versión |
Método de generación |
Uso habitual |
|
1 |
Marca de tiempo + MAC |
Sistemas heredados |
|
2 |
Seguridad DCE |
Poco frecuente |
|
3 |
Basado en nombres (MD5) |
ID determinísticos |
|
4 |
Aleatorio |
Más habitual |
|
5 |
Basado en nombres (SHA-1 |
Determinístico (hash más fuerte) |
En el software moderno, la versión 4 predomina debido a su simplicidad y fuerte aleatoriedad.
No existe una versión exclusiva para un término.
GUID o UUID: diferencias prácticas en la programación
En el desarrollo de aplicaciones, la distinción suele aparecer solo en la nomenclatura de las API.
.NET
Guid id=Guid.NewGuid();
Java
UUID id=UUID.randomUUID();
Python
import uuid
uuid.uuid4()
Go
import «github.com/google/uuid»
id := uuid.New()
Todos los ejemplos producen identificadores de la versión 4 compatibles con RFC.
La diferencia radica en el nombre del tipo, no en la estructura ni en la lógica de generación.
Orden de bytes y representación binaria
El matiz más técnico aparece en el nivel binario.
RFC define los campos en orden de bytes de red (big-endian).
Windows históricamente almacenaba ciertos componentes internamente utilizando endianidad mixta.
Esto afecta a:
- Comparaciones de bytes sin procesar.
- Serialización binaria.
- Intercambio binario entre plataformas.
Importante:
La forma textual canónica permanece idéntica en todas las plataformas.
Recomendación práctica
Cuando la interoperabilidad es importante:
- Intercambie identificadores como cadenas.
- Evite la comparación directa de bytes sin procesar entre sistemas.
- Utilice bibliotecas de análisis sintáctico oficiales.
Comparación estructural
|
Aspecto |
UUID (término estándar) |
GUID (término de Microsoft) |
|
Longitud |
128 bits |
128 bits |
|
Especificación aplicable |
RFC 4122 |
Implementación basada en RFC |
|
Formato de texto |
8-4-4-4-12 hexadecimal |
Igual |
|
Versión común |
v4 |
v4 |
|
Multipropósito |
Si |
Si |
|
Origen del ecosistema |
IETF / ISO |
Microsoft |
La tabla muestra la equivalencia práctica.
Cuando la distinción realmente importa
En escenarios típicos (API REST, microservicios, bases de datos), no hay diferencias de comportamiento.
Sin embargo, se debe tener cuidado en:
- Interoperabilidad COM.
- RPC heredado de Windows.
- Almacenamiento binario de bajo nivel.
- Hash a nivel de bytes o firma digital.
- Formatos de serialización personalizados.
Si los identificadores se tratan únicamente como matrices de 16 bytes, se debe gestionar explícitamente el endianismo.
Seguridad y mejores prácticas
Las características de seguridad dependen de la versión, no de la terminología.
- La versión 1 puede exponer la marca de tiempo y la información del hardware.
- Se recomienda la versión 4 para identificadores únicos de uso general.
- Las versiones 3 y 5 proporcionan valores deterministas basados en nombres.
Mejores prácticas:
- Utilice siempre bibliotecas estándar.
- Prefiera la versión 4 a menos que se requiera un comportamiento determinista.
- Almacene en formato textual canónico para facilitar la portabilidad.
- Evite construir manualmente secuencias aleatorias de 16 bytes: los bits de versión y variante deben configurarse correctamente.
Aclaración final
En la ingeniería de software moderna, ambos términos se refieren al mismo estándar de identificador único de 128 bits.
La distinción es histórica y está determinada por el ecosistema:
- Un término tiene su origen en especificaciones internacionales formales.
- El otro tiene su origen en la nomenclatura de implementación de Microsoft.
Desde el punto de vista funcional, estructural y algorítmico, describen el mismo formato de identificador. Comprender esto elimina confusiones innecesarias y centra la atención en las consideraciones técnicas reales: método de generación, serialización, estrategia de almacenamiento e interoperabilidad.