XIKEW.COM - 公读宝典 - 为什么 NanoID 要取代 UUID? - 公读宝典,uuid,nanoid,guid - UUID是软件开发中最常用的通用标识符之一。然而在过去的几年里,其他的替代品挑战了它的存在。其中NanoID是接替UUID的主要竞争者之一。

为什么 NanoID 要取代 UUID?
文摘 UUID NANOID 4/8/2022 9:13:19 AM 阅读:24

UUID是软件开发中最常用的通用标识符之一。然而在过去的几年里,其他的替代品挑战了它的存在。其中NanoID是接替UUID的主要竞争者之一。 关键字:uuid,nanoid,guid

1_o7WnAbmlrLnDmfRhl3opQ.jpeg

原文地址

Why is NanoID Replacing UUID? - Charuka Herath

知乎译文

[译] 为什么 NanoID 会取代 UUID - TianTianUp

GITHUB

项目地址 https://github.com/ai/nanoid

中文文档 README.zh-CN.md

与 UUID 的比较

Nano ID 与 UUID v4 (基于随机) 相当。 它们在 ID 中有相似数量的随机位 (Nano ID 为126,UUID 为122),因此它们的冲突概率相似::

要想有十亿分之一的重复机会, 必须产生103万亿个版本4的ID.

Nano ID 和 UUID v4之间有三个主要区别:

  1. Nano ID 使用更大的字母表,所以类似数量的随机位 被包装在21个符号中,而不是36个。
  2. Nano ID 代码比 uuid/v4 包少 4倍: 130字节而不是483字节.
  3. 由于内存分配的技巧,Nano ID 比 UUID 快 60%。

安全性

请看一篇关于随机生成器理论的好文章: 安全的随机值 (在 Node.js 中)

  • 不可预测性. 不使用不安全的 Math.random(), Nano ID 使用 Node.js 的 crypto 模块和浏览器的 Web Crypto API。 这些模块使用不可预测的硬件随机生成器。

  • 统一性. 随机 % 字母表 是编写ID生成器时常犯的一个错误。 符号的分布是不均匀的; 有些符号出现的几率会比其他符号低。因此, 它将减少刷新时的尝试次数。 Nano ID 使用了一种 更好的算法,并进行了一致性测试。

  • 有据可查: 所有的 Nano ID 的行为都有记录。 见 源代码 中的注释。

  • 漏洞: 报告安全漏洞,请使用 安全联系人 Tidelift. Tidelift 将协调修复和披露。

其他编程语言

Nano ID 已被移植到许多语言。 你可以使用下面这些移植,获取在客户端和服务器端相同的ID生成器。

此外,CLI 还可用于从命令行生成 ID。

工具