使用 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-xNuoe3j7ag
和 aOSL2RT_Rhy-xNuoe3j7ah
生成相同的 UUID:d2369f6c-1eea-4518-a641-33d6c2dc0493
。
这也适用于更多的蛞蝓。例子:
0jafbB7qRRimQTPWwtwEkw
、0jafbB7qRRimQTPWwtwEkx
。 (两者都翻译成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 位中的一个(或多个)的任何值。大概您已经在以其他方式验证它们(例如太长、太短、无效字符等),因此这只是要添加到列表中的另一个小测试。
我正在使用 slugId,它是一个 node.js 模块,用于将 UUID 转换为 base64 URL 友好文本,反之亦然。 (参见:https://github.com/taskcluster/slugid)当我们的一位 QA 正在执行测试时,他发现了以下我无法解释的内容:
slug:aOSL2RT_Rhy-xNuoe3j7ag
和 aOSL2RT_Rhy-xNuoe3j7ah
生成相同的 UUID:d2369f6c-1eea-4518-a641-33d6c2dc0493
。
这也适用于更多的蛞蝓。例子:
0jafbB7qRRimQTPWwtwEkw
、0jafbB7qRRimQTPWwtwEkx
。 (两者都翻译成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 位中的一个(或多个)的任何值。大概您已经在以其他方式验证它们(例如太长、太短、无效字符等),因此这只是要添加到列表中的另一个小测试。