问题:
当使用具有更多熵设置的PHP的uniqid函数时,第15个字符在我的运行中总是一个句点(点)。第15个字符是否保证始终为点?
随访:
感谢@FuzzyTree的回答。
我还进一步调查了一下,所以对于那些感兴趣的人来说,php_combined_lcg()函数会生成0到1之间的随机数(例如0.862215793)。在十进制之前有一个数字的原因是因为它乘以10(在本例中它变为8.62215793)。这可以防止始终为0作为第14个字符。
答案 0 :(得分:2)
是的,如果more_entropy
设置为true,则第15个字符保证为点。
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);
}