使用 node.js 中的 slugId 的 UUID 的 base64 表示

base64 representation of UUID using slugId from node.js

我正在使用 slugId,它是一个 node.js 模块,用于将 UUID 转换为 base64 URL 友好文本,反之亦然。 (参见:https://github.com/taskcluster/slugid)当我们的一位 QA 正在执行测试时,他发现了以下我无法解释的内容: slug:aOSL2RT_Rhy-xNuoe3j7agaOSL2RT_Rhy-xNuoe3j7ah 生成相同的 UUID:d2369f6c-1eea-4518-a641-33d6c2dc0493。 这也适用于更多的蛞蝓。例子: 0jafbB7qRRimQTPWwtwEkw0jafbB7qRRimQTPWwtwEkx。 (两者都翻译成UUID:d2369f6c-1eea-4518-a641-33d6c2dc0493

slugId 的 decode 和 decode 功能看起来不错,但我无法解释上述行为。

一个"slugId"是22个字符。每个字符都是base64的,即代表6位,也就是总共有22×6=132位。但是,UUID 只有 128 位; slugId 的最后 4 位在转换中被丢弃,因此有 16 个 slugId 值映射到每个 UUID 值。

这意味着您需要清理输入中的所有 slugId 值,例如通过拒绝设置了最后 4 位中的一个(或多个)的任何值。大概您已经在以其他方式验证它们(例如太长、太短、无效字符等),因此这只是要添加到列表中的另一个小测试。