短 ID 生成说明
使用教程
条数同样是 10 到 50。长度默认 21,可在 1 到 64 之间改;超出范围时会按边界夹紧。点生成后,卡片可以单条复制,也可以一次复制全部,中间是换行。长度越短越省地方,也越容易在大量数据里撞上,给公开链接或主键用时不要为了好看压到个位数。
结果只留在这次操作里。刷新后列表清空,页面不会把 ID 发到服务器,也不会写进本地存储。适合文件名、前端临时键、还没决定数据库主键时先占一个短编号。
原理简述
每一条都用 crypto.getRandomValues 取出等长的随机字节,再映射到固定字母表:大小写字母、数字,以及下划线和连字符,一共 64 个字符。映射用的是字节的低 6 位。256 正好能被 64 整除,所以这种取法没有取模偏差,每个字符出现的机会相同。
这和常见的 nanoid 字母表一致,但是页面自己算的,没有去请求外部生成接口。字符里没有加号、斜杠和等号,放进 URL 查询参数时一般不用再编码。全部随机数都在本机取出。
相关知识
默认 21 个字符、每个 6 比特,大约 126 比特,和 UUID 版本 4 的 122 比特接近,但没有连字符,放进界面和链接更短。UUID 版本 4 的好处是格式全世界认;这种短 ID 的好处是紧凑、URL 安全。两者都不是密码。若两套系统要互相认这串字符,请约定同一套字母表和长度,否则另一边无法复现规则,只能把字符串当不透明的键来存。
常见问题
- 和上一页的 UUID 怎么选?
- 要标准格式、给数据库或跨语言库用,选 UUID。要更短、直接放进网址,用这里的短 ID,并把长度留在 21 附近。
- 为什么长度上限是 64?
- 页面把单条长度限制在 1 到 64,避免一次复制出过长的串。需要更长的随机串时,应使用专门的令牌生成,而不是把标识拉到几百位。
- 字母表里为什么有下划线和连字符?
- 它们在 URL 里是安全字符,又能把字母表补满 64,方便用 6 个比特对应一个字符。不要把连字符理解成 UUID 那种分段。