【发布时间】:2010-11-01 15:08:12
【问题描述】:
这个问题实际上并不是一个寻找解决方案的问题,它只是一个简单的好奇心问题。 PHP uniqid 函数有一个更熵标志,以使输出“更独特”。这让我想知道,当 more_entropy 为真时,这个函数产生相同结果的可能性有多大,而当它不是时。换句话说,启用 more_entropy 时 uniqid 与禁用时相比有多独特?一直启用 more_entropy 有什么缺点吗?
【问题讨论】:
-
如果您想要始终独特的东西,您需要实现GUID。几乎所有其他东西最终都会发生碰撞,因为函数中只有这么多的熵。例如,
uniqid和more_entropy集仅提供大约 92 位熵(23 十六进制位)。要了解为什么这不利于唯一性,请参阅 The Birthday Problem... -
@ircmaxell 感谢您指出生日问题,这很有趣。答案中应该明确提及。
-
uniqid() 不是哈希函数,因此生日问题不适用于它。但它确实有它的弱点。
-
@ircmaxell 这个数字是从哪里来的?
more_entropy大约是 30 位熵(九位十进制数字),微秒部分大约是 20(六位十进制数字),其余的从何而来?您需要从 100,000 年的范围中选择第二个才能获得 42 位熵。
标签: php