【问题标题】:PHP's uniqid function with more entropyPHP 的 uniqid 函数具有更多的熵
【发布时间】:2015-10-10 05:22:18
【问题描述】:

问题:

当使用带有更多熵集的 PHP uniqid 函数时,我运行时第 15 个字符始终是句点(点)。第 15 个字符是否保证始终是一个点?

跟进:

感谢@FuzzyTree 的回答。

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

【问题讨论】:

    标签: php unique


    【解决方案1】:

    是的,如果 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);
    }
    

    【讨论】:

    • @kojow 小数点前 5 个字符由包含微秒的时间戳生成
    猜你喜欢
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多