这个问题其实并不是一个寻求解决方案的问题,而更多的是一个简单的好奇心问题。 PHP uniqid 函数有一个更多的熵标志,使输出“更独特”。这让我想知道,当 more_entropy 为真时和不为真时,该函数多次产生相同结果的可能性有多大。换句话说,当启用 more_entropy 时,与禁用它时相比,uniqid 有多独特?始终启用 more_entropy 有什么缺点吗?
2014 年 3 月更新:
首先,需要注意的是uniqid
有点用词不当,因为它不能保证唯一的 ID。
Per the PHP 文档:
WARNING!
此函数不会创建随机或不可预测的字符串。这
函数不得用于安全目的。以加密方式使用
安全随机函数/生成器和加密安全哈希
功能来创建不可预测的安全 ID。
And
此函数不会生成加密安全令牌,在
事实上没有传递任何额外参数的返回值
与微时间()。如果您需要生成
加密安全令牌的使用openssl_random_pseudo_bytes().
根据文档,将 more-entropy 设置为 true 会生成更独特的值,但执行时间更长(尽管程度很小):
如果设置为 TRUE,uniqid() 将添加额外的熵(使用
组合线性同余生成器)在返回结束时
值,这增加了结果唯一的可能性。
注意该行increases the likelihood that the result will be unique
而不是那是意志保证独特性。
您可以在一定程度上“无休止地”追求独特性,并使用任意数量的加密例程进行增强,添加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
我建议的是锻炼why您需要唯一性,是为了安全(即添加到加密/加扰例程中)吗?还,How它需要是独特的吗?最后,看看速度的考虑。适用性将随着基本考虑因素的变化而变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)