纳米ID生成器
指导
纳米ID生成器
在浏览器中生成安全且URL友好的唯一ID。Nano ID生成器使用紧凑标识符,基于 crypto.getRandomValues,完全控制长度、字母表和输出格式。默认ID长度为21个字符,具有与UUID v4相同的碰撞抗性——但短41%,并可直接安全地嵌入URL中。
如何使用
- 设置 ID 长度 (默认21个字符,范围为2到256)。
- 选择 生成数量 一次生成的ID数量(1到1000)。
- 选择一个 字母:URL安全(默认)、字母数字、十六进制、无易混淆字符,或自定义。
- 选择一个 输出格式:纯文本、JSON数组或CSV。
- 点击 生成。通过输出面板中的按钮复制或下载结果。
特征
- 可配置长度 – 每个ID长度从2到256个字符。
- 9个字母表预设 – URL安全、字母数字、小写、大写、数字、十六进制(小写/大写)、无易混淆字符,以及一个完全自定义的字母表字段。
- 批量生成 – 一次可生成最多1000个唯一ID。
- 多种输出格式 – 纯文本、JSON数组或CSV格式,可直接用于代码或导入。
- 实时碰撞统计 – 查看ID空间、以比特为单位的熵值,以及1%碰撞可能发生的阈值。
- 加密安全 – 使用
crypto.getRandomValues配合标准的基于nanoid的掩码算法,在任何字母表上实现均匀分布。 - 纯客户端运行 – 无需发送到服务器;ID永远不会离开您的浏览器。
- 复制与下载 – 一键复制到剪贴板,或下载为
.txt,.json, 或者.csv.
常问问题
-
Nano ID是否真的比顺序数据库ID更安全?
是的。顺序ID会泄露两方面的信息:现有记录数量以及创建速度。它们还允许攻击者通过在URL中递增数字来枚举您的数据。具有默认21个字符长度的Nano ID大约有126比特的熵,因此猜测一个有效ID在计算上是不可行的。当ID暴露在URL、共享链接或公开API中时,请始终使用它们。
-
Nano ID与UUID v4相比如何?
它们的碰撞抗性几乎相同——UUID v4有122比特熵,而长度为21的Nano ID有126比特。实际差异在于大小和字符集。UUID v4为36个字符,包含连字符(通常需要百分号编码);Nano ID默认为21个字符,使用URL安全的字母表。Nano ID还暴露了其字母表和长度,因此您可以为低流量系统缩小ID长度,或为高流量系统增强安全性。
-
为什么Nano ID需要基于掩码的算法?
随机字节范围从0到255,但大多数实用的字母表不是2的幂——URL安全字母表有64个字符,无易混淆字符字母表有49个。如果简单地将字节对字母表大小取模,字母表开头的字符会出现略微更多的频率,这种细微偏差可以被攻击者利用。基于掩码的算法将字母表向上取整到下一个2的幂,然后丢弃超出字母表范围的字节,从而确保每个字符出现的概率相等。
-
什么是生日悖论,为什么它限制了ID长度?
生日悖论表明,在随机空间中,碰撞出现的时间远早于直觉所想。当有N个可能的ID时,大约在生成了√N个ID后,就有约50%的碰撞概率——而不是N。因此,一个64字符字母表的8字符ID有281万亿种组合,但50%的碰撞在生成约1900万个ID后就可能发生。这就是为什么用于大规模数据集的ID长度至少需要20到24个字符。
-
无易混淆字符字母表排除了哪些字符,以及何时应该使用它?
它移除了人类最容易混淆的字符:零和大写O,一和大写I以及小写L,以及其他一些在排版上相似的字符。适用于任何人类可能口头读出、从截图中转录或从打印的收据中输入的代码——例如优惠码、支持工单引用、双因素备份码或恢复码。代价是字母表更小(49个字符对比64个),因此需要增加1到2个字符长度以保持相同的碰撞抗性。
