跳至正文

UUID/GUID 生成器

生成 UUID(通用唯一标识符)v4 的免费在线工具。

⚙️ 생성 옵션

✨ 생성된 UUID

UUID (Universally Unique Identifier) v4를 생성합니다. 각 UUID는 통계적으로 고유하며, 데이터베이스 키, 세션 ID 등으로 사용됩니다.

💡 예시

기본 (소문자, 하이픈):
550e8400-e29b-41d4-a716-446655440000
대문자:
550E8400-E29B-41D4-A716-446655440000
하이픈 없음:
550e8400e29b41d4a716446655440000

什么是 UUID?

UUID(Universally Unique Identifier)或 GUID(Globally Unique Identifier)是用于唯一标识信息的 128 位数字。UUID v4 是随机生成的,重复概率几乎为零。

主要功能

  • 批量生成:可选择 1 个、5 个、10 个、20 个
  • 大小写:选择所需格式
  • 连字符选项:选择包含/删除连字符
  • 即时复制:一键复制到剪贴板
  • 基于浏览器:无需安装,完全在客户端运行

使用方法

基本使用

  1. 选择要生成的 UUID 数量(1、5、10、20)
  2. 选择选项:
    • 大写:勾选后生成大写字母
    • 包含连字符:勾选后生成带连字符的格式
  3. 点击"生成"按钮
  4. 复制生成的 UUID 使用

格式选择

基本格式(小写,带连字符)

550e8400-e29b-41d4-a716-446655440000

大写

550E8400-E29B-41D4-A716-446655440000

无连字符

550e8400e29b41d4a716446655440000

UUID 结构

UUID v4 具有以下结构:

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
  • x:随机十六进制数(0-9,a-f)
  • 4:版本号(表示 v4)
  • y:随机十六进制数(8、9、a、b 中的一个)

总共 128 位 = 用 32 位十六进制数表示。

使用案例

1. 数据库主键

CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(100),
email VARCHAR(100)
);

2. 分布式系统 ID

多个服务器独立生成 ID 也不会冲突:

const userId = '550e8400-e29b-41d4-a716-446655440000';
const sessionId = 'a3bb189e-8bf9-3888-9912-ace4e6543002';

3. 文件名

const filename = `upload-${uuid}.jpg`;
// upload-550e8400-e29b-41d4-a716-446655440000.jpg

4. API 令牌

Authorization: Bearer 550e8400-e29b-41d4-a716-446655440000

5. 会话 ID

const sessionId = generateUUID();
sessionStorage.setItem('sessionId', sessionId);

UUID 版本

UUID v1

  • 基于时间戳 + MAC 地址
  • 保证时间顺序
  • 有 MAC 地址泄露风险

UUID v4(本工具使用)⭐

  • 完全随机
  • 应用最广泛
  • 无隐私泄露

UUID v5

  • 基于名称(SHA-1 哈希)
  • 相同输入 → 相同 UUID

冲突概率

UUID v4 的冲突概率极低:

  • 总可能的 UUID 数量:2^122 ≈ 5.3 × 10^36 个
  • 生成 10 亿个时的冲突概率:约 10^-18(几乎为零)
  • 宇宙中所有原子数量:10^80 个

实际上无需担心冲突!

编程语言使用方法

JavaScript

// 浏览器
const uuid = crypto.randomUUID();

// Node.js
const { v4: uuidv4 } = require('uuid');
const uuid = uuidv4();

Python

import uuid

# 生成 UUID v4
my_uuid = uuid.uuid4()
print(my_uuid) # 550e8400-e29b-41d4-a716-446655440000

Java

import java.util.UUID;

UUID uuid = UUID.randomUUID();
String uuidString = uuid.toString();

PHP

<?php
$uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
mt_rand(0, 0x3fff) | 0x8000,
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
?>

C#

using System;

Guid uuid = Guid.NewGuid();
string uuidString = uuid.ToString();

实用技巧

1. 批量生成

需要大量 UUID 时一次性生成:

  • 生成测试数据
  • 迁移脚本
  • 准备种子数据

2. 数据库索引

使用 UUID 作为主键时的注意事项:

  • 完全随机 → 可能降低 B-Tree 索引性能
  • 考虑 UUID v1 或 ULID(顺序特性)
  • 建议使用 PostgreSQL 的 gen_random_uuid()

3. 在 URL 中使用

// 去掉连字符的格式更简洁
const url = `https://example.com/items/${uuid.replace(/-/g, '')}`;

4. 日志和追踪

const requestId = crypto.randomUUID();
console.log(`[${requestId}] Request started`);
// ... 处理 ...
console.log(`[${requestId}] Request completed`);

安全考虑

✅ 安全使用

  • 会话 ID
  • API 密钥(配合额外安全措施)
  • 临时文件名
  • 追踪 ID

⚠️ 需要注意

  • 不可预测但不是机密:不要仅用 UUID 进行身份验证
  • 需要额外验证:权限确认、签名等
  • 可能暴露:包含在 URL 中时会记录在日志中

常见问题

Q:UUID 真的是唯一的吗?

是的。统计上冲突概率几乎为零。实际上,即使每秒生成 10 亿个,在宇宙的年龄期间也几乎不会重复。

Q:UUID v4 和 v1 的区别是什么?

  • v1:基于时间戳 + MAC 地址,保证时间顺序,有隐私泄露风险
  • v4:完全随机,无时间顺序,隐私安全

Q:应该使用大写还是小写?

通常小写是标准,但两者都有效。根据系统要求选择。

Q:连字符是必需的吗?

连字符是为了可读性。某些系统更喜欢无连字符格式。

Q:可以用作数据库主键吗?

可以。但为了性能,也可以考虑顺序 ID(AUTO_INCREMENT)或 ULID。

Q:可以用 UUID 作为密码吗?

不推荐。UUID 虽然不可预测,但使用密码哈希函数(bcrypt、argon2)更安全。

相关工具

性能

  • 生成速度:毫秒以下
  • 浏览器支持:Chrome 92+、Firefox 95+、Safari 15.4+
  • 内存使用:最小
  • 离线运行:完全支持

浏览器兼容性

本工具使用 Web Crypto API:

  • Chrome 92+ ✓
  • Firefox 95+ ✓
  • Safari 15.4+ ✓
  • Edge 92+ ✓

在旧版浏览器中可能无法工作。

💬 这个工具对您有帮助吗?

如果您觉得 UUID 生成器有用,请分享给需要的朋友!我们持续改进工具以提供更好的服务。

隐私保护

本工具完全在客户端运行。生成的 UUID 不会发送到服务器,仅在浏览器中处理。