CUID2 生成器
指导
CUID2 生成器
在您的浏览器中完全生成加密安全的 CUID2 ID。CUID2 是一种现代、抗碰撞的标识符格式,它结合了高熵随机盐、单调计数器、时间戳和浏览器指纹,然后将结果通过 SHA3-512 哈希处理,生成一个基于 36 进制的字符串。每个 ID 都以字母开头,因此可以在数据库、URL 和大多数标识符列中安全使用。
如何使用
- 选择 8 到 32 个字符之间的 ID 长度。24 个字符的默认值适用于大多数应用程序。
- 选择一次生成的 ID 数量(最多 100 个)。
- 可选地启用 CUID v1 比较,以并排查看旧格式。
- 点击 生成 生成 ID 后,可复制或下载结果。
- 查看结构分解,以了解每个部分(时间戳、计数器、盐、指纹)如何构成最终的 ID。
特征
- 可配置长度 – 8 到 32 个字符,碰撞空间估算实时更新。
- 批量生成 – 每次点击最多生成 100 个 ID,用于数据库初始化或测试。
- 数据库安全的首字母 – 每个 ID 都以 a–z 开头,因此可在标识符列和 CSS 选择器中使用。
- SHA3-512 哈希处理 – 符合官方 CUID2 规范中的熵混合步骤。
- 指纹暴露 – 查看用于生成每个 ID 的浏览器指纹。
- 结构分解 – 查看构成示例 ID 的时间戳、计数器、盐和指纹部分。
- CUID v1 比较 – 生成匹配的 CUID v1 ID,以了解格式差异。
- 加密随机性 – 使用
crypto.getRandomValues()而不是可预测的伪随机数生成器(PRNG)。 - 100% 客户端 – 无需发送到服务器,ID 从未离开您的浏览器。
常问问题
-
CUID2 与 UUID v4 有何不同?
UUID v4 使用 122 位的纯随机性,没有任何结构保护以防止劣质 PRNG 或重复环境。CUID2 故意将时间戳、单调计数器、主机指纹和一个加密随机盐混合,然后通过 SHA3-512 哈希处理。结果是主机无关、难以伪造,并且仅使用小写字母和数字,使 CUID2 ID 具有 URL 安全性、数据库安全性和在单个机器上弱随机性的抗性。
-
为什么 CUID2 ID 始终以字母开头?
许多系统将以数字开头的标识符视为数字(CSS 选择器、GraphQL 字段名、JavaScript 变量名、某些数据库标识符列)。通过强制首字符为 a–z,CUID2 ID 可在几乎所有环境中作为标识符使用,无需转义或引号。其余字符来自基于 36 进制的 SHA3 哈希,可能是字母或数字。
-
CUID2 ID 可以按创建时间排序吗?
不可以。CUID v1 因为时间戳出现在 ID 的前端而具有松散的可排序性。CUID2 将时间戳与盐和指纹混合后进行哈希处理,因此生成的字符无法透露创建顺序。如果您需要时间顺序的 ID,请使用 ULID、KSUID 或 Snowflake 等格式。如果您需要不可预测、不透明的 ID 且可以安全地暴露给外部,CUID2 是一个很好的选择。
-
CUID2 发生碰撞的可能性有多大?
在默认的 24 个字符长度下,ID 空间约为 26 × 36²³,远超任何现实的生成速率。生日悖论的 50% 碰撞阈值远高于十亿亿个 ID。将长度增加到 32 时,在任何现实规模下碰撞都几乎不可能,而较短长度(8–10)仅适用于低流量场景,如分享码或短链接。
-
浏览器指纹的作用是什么?
指纹是基于用户代理、屏幕大小、时区和语言等环境数据的哈希值,混合了一个新的随机盐。它确保在相同毫秒内,不同机器生成的 ID 会得到不同的哈希输入。指纹不会识别您个人身份,它是多个熵源之一,用于 SHA3 哈希处理,且不会被存储或传输。
