Base62 编码是使用小写字母 26 个 (a-z) + 大写字母 26 个 (A-Z) + 数字 10 个 (0-9),共计 62 个字符来表示数据的编码方式。它用于生成短链接的短码。
为什么 Base62 适合短链接?用数字来说明。6 位 Base62 编码可以表示的模式数为 62 的 6 次方,约 568 亿种。7 位则约 3.5 万亿种。
短链接服务的一种实现方式是为每个 URL 分配一个唯一的整数 ID,然后将该 ID 转换为 Base62 来生成短码。例如,字符顺序为 0-9、a-z、A-Z 时,ID = 12345 转换为 Base62 后变为「3d7」(3 个字符)。ID 越大,编码越长,但在约 568 亿条记录以内都可以控制在 6 个字符以内。
与 Base62 类似的方式有 Base64,但 Base64 包含「+」和「/」,在 URL 中使用时可能出现问题。Base62 使用的字母数字属于 RFC 3986 中可在 URL 里直接使用的非保留字符 (unreserved),因此无需额外的编码处理。
Base62 的实现是将十进制数转换为六十二进制数。在大多数编程语言中只需几行代码就能实现。但需要注意的是,如果直接将连续 ID 转换为 Base62,短码会变得可预测,存在安全隐患。作为对策,可以结合哈希函数使用,或生成随机字符串。