Sqids: 简短唯一ID生成器
内容提要
Sqids是一个开源库,可以生成简短的唯一且随机的标识符。这些ID是URL安全的,可以编码多个数字,并剔除脏话和政治敏感词。Sqids具有许多特性,支持多种语言,可以自定义字母表和屏蔽列表。它适用于短链接、日志、产品/对象ID生成等场景。Sqids不能编码负数,最小字母表长度为3个字符,不能生成固定长度的ID。可以使用Sqids的Go语言库进行编码和解码。
延伸解读
Sqids 的适用边界
Sqids 生成的 ID 可解码回原始数字,因此不适合用于敏感数据或用户 ID,否则可能泄露用户数量等内部信息。它更适合短链接、日志事件 ID、产品 ID、确认码等非敏感场景。
自定义字母表与 ID 长度
Sqids 允许自定义字母表,字母表越长生成的 ID 越短,反之越长。默认字母表区分大小写,且最小长度为 3 个字符。但无法生成固定长度的 ID,只能设置最小长度参数(0-255)。
屏蔽列表机制
Sqids 内置多语言屏蔽列表,防止 ID 中出现不雅词汇。匹配不区分大小写:少于 3 字符不屏蔽,3 字符需完全匹配,4 字符以上作为子串触发。含数字的 leet 词汇仅在 ID 开头或结尾触发。
验证 ID 合法性的方法
解码 ID 得到数字并不代表 ID 规范。要验证合法性,可重新编码解码后的数字并检查是否与原 ID 一致。Sqids 不自动执行此操作,以避免未来屏蔽列表更新导致旧 ID 失效。
Q&A
Sqids是什么?
Sqids是一个开源库,用于生成简短的唯一且随机的标识符,支持URL安全。
Sqids适合用于哪些场景?
Sqids适合用于短链接、日志生成、产品ID、确认码等场景。
Sqids有哪些特性?
Sqids支持多种语言、易于编码解码、可自定义字母表和屏蔽列表,且生成的ID不包含脏话。
Sqids有哪些限制?
Sqids不能编码负数,最小字母表长度为3个字符,且不能生成固定长度的ID。
如何验证Sqids生成的ID是否合法?
可以通过重新编码解码后的数字并检查ID是否匹配来验证ID的合法性。
Sqids的屏蔽列表有什么作用?
屏蔽列表可以防止不当词汇出现在生成的ID中,确保ID在公共场合的安全性。