![]() |
1
35
更新,2014年3月:
根据 PHP documentation :
以及
根据文档,将more entropy设置为true会生成一个更为唯一的值,但是执行时间会更长(尽管程度很小):
注意这一行
在某种程度上,您可以“无休止”地追求唯一性,并使用任意数量的加密例程来增强,添加 salts 诸如此类——这取决于目的。 我建议查看关于主要PHP主题的评论,特别是: http://www.php.net/manual/en/function.uniqid.php#96898 http://www.php.net/manual/en/function.uniqid.php#96549 http://www.php.net/manual/en/function.uniqid.php#95001 为什么? 您需要唯一性,这是为了安全性吗(即添加到加密/加扰例程中)?也, 它必须是独一无二的吗?最后,看看速度方面的考虑。适当性将随着潜在的考虑而改变。 |
![]() |
2
15
只有当你检查它们已经不存在的时候,它们才是唯一的。不管你用什么函数来生成一个“随机”字符串,或者ID,如果你不仔细检查它是否是重复的,那么总是有机会的。。;) 虽然uniqid是基于当前时间的,但上面的警告仍然适用——这取决于您将在何处使用这些“唯一id”。所有这一切的线索就是它所说的“更加独特”。独一无二就是独一无二。你怎么能有一些或多或少的独特,是有点困惑我! 如上所述进行检查,并将所有这些内容组合在一起,将使您最终获得接近唯一性的结果,但这一切都与密钥的使用位置和上下文有关。希望能有帮助! |
![]() |
3
10
从PHP手册站点上关于函数的讨论:
换言之,如果没有“更多的熵”,这个函数是绝对可怕的,永远不应该使用。根据文档,该标志将使用“组合线性同余生成器”来“添加熵”。嗯,那是一个相当弱的RNG。所以我完全跳过这个函数,使用基于 mt_rand 对与安全无关的事情要有好的种子,对与安全无关的事情要有SHA-256。 |
![]() |
4
7
从那里开始,这是一个可能性有多大的问题。答案是,不是很好,但不是到了一个可折的程度。如果你 需要 |
![]() |
5
4
相关位来自 the source code 是
|