uuid guid generator online free

在线 UUID 生成器:免费生成 V1、V4 和 V5 GUID

在线免费生成唯一的 UUID(v1、v3、v4、v5)。通过我们的全面指南了解 UUID 版本之间的区别以及如何在项目中使用它们。

在线 UUID 生成器:免费生成 V1、V4 和 V5 GUID

在现代软件开发中,唯一标识符是数据完整性的基石。无论您是在设计数据库架构、构建微服务架构,还是管理会话令牌,拥有可靠的方法来生成通用唯一标识符 (UUID) 都至关重要。我们的在线 UUID 生成器提供了一种免费、安全且快速的方法来生成各种格式的 GUID(全局唯一标识符),包括 v1、v3、v4 和 v5。

快速开始:立即生成 UUID

👉 使用我们的 UUID 生成器 立即创建唯一标识符。无需安装,无需注册,完全私密。

什么是 UUID?

UUID(Universally Unique Identifier,通用唯一标识符)是一个 128 位的数字,用于识别计算机系统中的信息。当按照标准方法生成时,UUID 在实际应用中是唯一的。它们的唯一性不依赖于中央注册机构或生成它们的各方之间的协调,这与大多数其他编号方案不同。

GUID(Globally Unique Identifier,全局唯一标识符)这个术语也很常用,特别是在 Microsoft 生态系统中。在所有实际意图和用途中,UUID 和 GUID 是一回事。

标准 UUID 由 32 个十六进制数字组成,显示为由连字符分隔的五组,形式为 8-4-4-4-12,总共 36 个字符(32 个字母数字字符和 4 个连字符)。例如: 550e8400-e29b-41d4-a716-446655440000

了解 UUID 版本

并非所有 UUID 都是平等的。根据您的用例,您可能需要不同“版本”的 UUID。我们的工具支持最常见的版本:

UUID 第 1 版(基于时间)

第 1 版 UUID 是使用当前时间和生成 UUID 的计算机的 MAC 地址生成的。

  • 优点:它包含时间戳,这对于排序很有用。
  • 缺点:它泄露了创建时间生成它的机器的 MAC 地址(身份),这可能会引发隐私问题。

UUID 第 3 版(基于名称,MD5)

第 3 版 UUID 是通过使用 MD5 算法对命名空间标识符和名称进行哈希处理生成的。

  • 优点:确定性。如果您提供相同的命名空间和名称,您将始终获得相同的 UUID。
  • 缺点:MD5 被认为在密码学上较弱(尽管对于 ID 生成,这通常是可以接受的)。

UUID 第 4 版(随机)

第 4 版 UUID 是使用随机或伪随机数生成的。这是当今最常用的版本。

  • 优点:在不泄露任何元数据的情况下,唯一性的概率极高。
  • 缺点:没有固有的排序能力。

UUID 第 5 版(基于名称,SHA-1)

类似于第 3 版,但使用 SHA-1 而不是 MD5。

  • 优点:确定性,并且使用比第 3 版更强的哈希算法。
  • 缺点:仍然是确定性的,因此如果命名空间已知,它会泄露名称之间的关系。

NIL UUID

NIL UUID 是一种特殊形式的 UUID,指定所有 128 位都设置为零。 00000000-0000-0000-0000-000000000000

何时使用哪个版本?

场景 推荐版本 原因
数据库主键 第 4 版 或 第 7 版* 随机性防止枚举攻击。
分布式系统 第 1 版 时间排序有助于日志分析。
一致性映射 第 5 版 相同的输入始终产生相同的输出。
遗留支持 第 3 版 如果 SHA-1 不可用或为了特定的后向兼容性使用。

*注意:UUID 第 7 版是一个较新的提案,它结合了时间和随机性,以获得更好的数据库索引性能。我们的工具专注于稳定的 RFC 4122 版本。

如何通过编程生成 UUID

虽然我们的在线工具非常适合快速任务和调试,但您可能需要在代码中生成 UUID。以下是一些常见的示例:

Node.js

使用流行的 uuid 包:

const { v4: uuidv4 } = require('uuid');
console.log(uuidv4()); // 输出一个随机的 v4 UUID

Python

Python 自带内置的 uuid 模块:

import uuid

# 生成随机 UUID (第 4 版)
print(uuid.uuid4())

# 根据主机 ID 和当前时间生成 UUID (第 1 版)
print(uuid.uuid1())

Java

Java 也有内置支持:

import java.util.UUID;

public class GenerateUUID {
    public static void main(String[] args) {
        UUID uuid = UUID.randomUUID();
        System.out.println(uuid.toString());
    }
}

常见问题 (FAQ)

问:UUID 真的唯一吗?

答:虽然它们在数学上不能保证是唯一的(因为位元数是有限的),但碰撞的概率极小,以至于在所有实际用途中,它们都是唯一的。例如,要使 v4 UUID 有 50% 的碰撞机会,您需要在大约 85 年内每秒生成 10 亿个 UUID。

问:我可以将 UUID 用作数据库主键吗?

答:是的,这是一种非常常见的做法,特别是在分布式系统中,多个服务器需要生成 ID 而无需相互通信。但是,请注意随机 UUID (v4) 可能会导致某些基于 B-Tree 的数据库(如 MySQL)中的索引碎片。在这种情况下,通常首选第 1 版或较新的第 7 版。

问:在 URL 中使用 UUID 安全吗?

答:是的,UUID 是 URL 安全的。它们经常被用作资源的别名(例如 example.com/user/550e8400-e29b-41d4-a716-446655440000),以防止用户猜测其他用户的 ID。

结论

无论您是开发人员、数据科学家,还是只需要为一次性任务获取唯一 ID 的人,我们的在线 UUID 生成器都能为您提供帮助。它快速、免费,并支持所有主要的 UUID 版本。

准备好了吗?立即生成您的 UUID!