0

我想知道我是否可以通过采用uuidv4的可变头部(即:x第一个字符)来安全地计算使用生日悖论的碰撞机会。

用例:我想要碰撞几率很小的随机 id。但是,每个表的记录数永远不会超过 1.000.000,因此使用 uuidv4 会过多,我想减少一些。这将节省很多,因为我最终将拥有数千张桌子。

天真地,可以按照建议采用 uuidv4 的可变头部来获得固定数量的随机位。然后,使用生日悖论,您可以计算碰撞概率。

例如,用 72 位随机数据​​编码的 1.000.000 个 id 会产生 1.05* 10^-10 的足够小的冲突机会(请参阅 calc)这可以编码为 12 个字符(base64),这将提供足够好的 URL .

当然,问题是 uuidv4 的任意头部是否可以被认为是随机的(足够)。

顺便说一句:基于此HN 帖子的问题

4

1 回答 1

0

随机 UUID 没有使用“普通”随机数生成器无法生成的特殊属性。它只是粘在一起的 128 个随机位。如果您决定想要 128 以外的某个数字,则生成您想要的任意数量;相反,创建一个 UUID 然后把它的一大块扔掉没有多大意义。

于 2014-11-24T05:09:35.540 回答