什么是GUID 生成器
GUID(全局唯一标识符)和 UUID 是同一个东西,只是名字不同。Microsoft 在 COM 时代引入了这个叫法,此后 .NET、SQL Server 和 Windows API 一直沿用,同时约定俗成地用大写并加上花括号。
它的结构和 UUID v4 完全一致:128 位,其中 122 位随机。两种写法可以互相转换,只是外观和大小写不同,只要系统允许,用哪一种都可以。
使用方法
- 默认已经打开大写和花括号,这正是 .NET 和 SQL Server 的常见写法。
- 如果不需要花括号,取消勾选即可得到纯小写格式。
- 设置数量后点击生成 UUID。
适用场景
- C# 和 .NET 应用,其中
Guid.Parse同时接受两种写法。 - SQL Server 的
uniqueidentifier列,它期望带花括号的大写写法。 - 调用 COM 或 Windows API 时,它们都按大写 GUID 来记录。
结构
和 UUID 一样:8-4-4-4-12 分组,共 128 位。唯一的区别在外观上 —— GUID 惯例用大写,并且经常被花括号包起来。
GUID 生成器 的定位
| 选项 | 何时使用 |
|---|---|
GUID | Microsoft 的叫法,大写并常用花括号包裹 |
UUID | 同一标准的通用叫法,惯用小写且不带花括号 |
v4 | 两者共同的结构基础:122 位随机数 |
UUID 各版本速查表
| 版本 | 可排序 | 数据来源 | 适合的场景 |
|---|---|---|---|
| v1 | 不可以 | 时间戳 + MAC 地址 | 仍在依赖 v1 的既有系统 |
| v3 | 不可以 | 名称的 MD5 哈希 | 必须使用 MD5 时的确定性标识符 |
| v4 | 不可以 | 122 位随机数 | 绝大多数普通的唯一标识需求 |
| v5 | 不可以 | 名称的 SHA-1 哈希 | 需要同一名称始终得到同一标识符 |
| v6 | 可以 | 重排后的时间戳 | 既要随机性又要便于排序 |
| v7 | 可以 | 毫秒精度的 Unix 时间 | 数据库主键和事件标识符 |
| v8 | 不可以 | 自定义位布局 | 专有格式和实验性用途 |
这七个版本都是 128 位,都用同样的 8-4-4-4-12 写法表示,区别只在于各个位代表什么。
代码示例
csharp
var id = Guid.NewGuid();
string upper = id.ToString("B"); // {649...-...}
sql
-- SQL Server
DECLARE @id UNIQUEIDENTIFIER = NEWID();
SELECT @id;
powershell
[guid]::NewGuid().ToString("B")
python
import uuid
str(uuid.uuid4()).upper()
常见问题
GUID 和 UUID 有什么不同?
本质上没有区别,都是 128 位,也都遵循同一套版本规则。GUID 是 Microsoft 的叫法,UUID 是 RFC 的标准叫法,两者可以互换使用。
花括号是必须的吗?
不是。花括号纯粹是 .NET 和 COM 的习惯,JSON、URL 和大部分数据库都接受不带花括号的小写写法。只有在目标系统明确要求时才需要带上。
GUID 会泄露我的信息吗?
不会。这里生成的是 v4 结构的 GUID,完全由随机数构成,不包含时间戳、MAC 地址或任何机器信息。