跳转到主内容

UUID生成器

UUID生成器是一个在线工具,可以自动生成UUID(通用唯一识别码)v4。您可以自定义大小写设置和连字符选项。

⚙️ 生成选项

✨ 生成的UUID

生成UUID(通用唯一标识符)v4。每个UUID在统计上是唯一的,用于数据库键、会话ID等。

💡 示例

默认(小写,连字符):
550e8400-e29b-41d4-a716-446655440000
大写:
550E8400-E29B-41D4-A716-446655440000
无连字符:
550e8400e29b41d4a716446655440000

功能

  • UUID v4生成:使用加密随机性生成统计唯一的ID
  • 批量生成:一次生成多个UUID(1-10个)
  • 大小写选择:选择大写或小写格式
  • 连字符选项:生成带连字符或不带连字符的UUID
  • 一键复制:点击复制UUID到剪贴板

什么是UUID?

UUID(通用唯一识别码)是软件系统中使用的128位唯一标识符。UUID v4使用随机数生成标识符,确保统计唯一性。

UUID格式

标准UUID格式以8-4-4-4-12格式用连字符分隔的32个十六进制字符表示:

550e8400-e29b-41d4-a716-446655440000

使用场景

1. 数据库主键

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

2. 会话ID

const sessionId = crypto.randomUUID();
localStorage.setItem('sessionId', sessionId);

3. 文件名

const uploadFile = (file) => {
const uuid = crypto.randomUUID();
const extension = file.name.split('.').pop();
const fileName = `${uuid}.${extension}`;
// 上传文件...
};

编程示例

JavaScript

// 浏览器环境 - Web Crypto API
const uuid = crypto.randomUUID();
console.log(uuid); // 550e8400-e29b-41d4-a716-446655440000

// 不带连字符
const uuidNoHyphens = crypto.randomUUID().replace(/-/g, '');
console.log(uuidNoHyphens);

// 大写
const uuidUpper = crypto.randomUUID().toUpperCase();
console.log(uuidUpper);

Python

import uuid

# 生成UUID v4
generated_uuid = uuid.uuid4()
print(generated_uuid)

# 转换为字符串
uuid_str = str(generated_uuid)

# 不带连字符
uuid_no_hyphens = uuid_str.replace('-', '')
print(uuid_no_hyphens)

# 大写
uuid_upper = uuid_str.upper()
print(uuid_upper)

安全和最佳实践

推荐做法

  1. 数据库主键:UUID非常适合需要独立密钥生成的分布式数据库
  2. 公开ID:由于非顺序性,对外公开是安全的
  3. API密钥:作为API密钥生成的一部分很有用
  4. 临时文件名:适合防止文件名冲突

不推荐做法

  1. 不适用于加密密钥:UUID作为加密密钥不够安全
  2. 不适用于密码存储:不要使用UUID替代适当的密码哈希
  3. 顺序要求:UUID是随机的,如果需要排序顺序不要使用
  4. 空间受限场景:128位UUID与较短ID相比可能效率较低

碰撞概率

UUID v4使用122位随机性(总共128位,其中6位用于版本和变体)。

  • 可能的UUID数量:2^122 ≈ 5.3 × 10^36
  • 碰撞概率:实际上为零
    • 每秒生成10亿个UUID持续85年:碰撞概率小于50%

常见问题

Q1. UUID版本之间有什么区别?

A: 有多个UUID版本:

  • 版本1:基于时间(包含MAC地址)
  • 版本3:基于MD5哈希
  • 版本4:随机(最常用)
  • 版本5:基于SHA-1哈希

版本4因其简单性和随机性而最常用。

Q2. UUID真的唯一吗?

A: 从统计学上讲,是的。凭借122位随机性,碰撞概率可以忽略不计。但是,不保证数学上的绝对唯一性。

Q3. 可以使用UUID作为数据库主键吗?

A: 可以,但需要考虑:

  • 优点:全局唯一,可以在客户端生成,对分布式系统安全
  • 缺点:存储空间更大(16字节 vs 整数的4-8字节),无顺序排序,索引稍慢

相关工具