我想知道我是否可以通过采用uuidv4的可变头部(即:x第一个字符)来安全地计算使用生日悖论的碰撞机会。
用例:我想要碰撞几率很小的随机 id。但是,每个表的记录数永远不会超过 1.000.000,因此使用 uuidv4 会过多,我想减少一些。这将节省很多,因为我最终将拥有数千张桌子。
天真地,可以按照建议采用 uuidv4 的可变头部来获得固定数量的随机位。然后,使用生日悖论,您可以计算碰撞概率。
例如,用 72 位随机数据编码的 1.000.000 个 id 会产生 1.05* 10^-10 的足够小的冲突机会(请参阅 calc)这可以编码为 12 个字符(base64),这将提供足够好的 URL .
当然,问题是 uuidv4 的任意头部是否可以被认为是随机的(足够)。
顺便说一句:基于此HN 帖子的问题