PHP的uniqid函数具有更多的熵

时间:2015-10-10 05:22:19

标签: php unique

问题:

当使用具有更多熵设置的PHP的uniqid函数时,第15个字符在我的运行中总是一个句点(点)。第15个字符是否保证始终为点?

随访:

感谢@FuzzyTree的回答。

我还进一步调查了一下,所以对于那些感兴趣的人来说,php_combined_lcg()函数会生成0到1之间的随机数(例如0.862215793)。在十进制之前有一个数字的原因是因为它乘以10(在本例中它变为8.62215793)。这可以防止始终为0作为第14个字符。

1 个答案:

答案 0 :(得分:2)

是的,如果more_entropy设置为true,则第15个字符保​​证为点。

来自php source for uniqid

if (more_entropy) {
    uniqid = strpprintf(0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg() * 10);
                                       ^ hard coded dot here preceeded by 14 characters
} else {
    uniqid = strpprintf(0, "%s%08x%05x", prefix, sec, usec);
}