不使用更多熵,uniqid基本上做以下(见uniqid.c的来源):
$time = explode(' ', microtime(false));
return sprintf('%s%08x%05x', $prefix, $time[1], $time[0] * 1000000);
Run Code Online (Sandbox Code Playgroud)
因此它基本上以微秒为单位获取当前时间并将它们转换为十六进制表示并将其附加到前缀.这确实已经提供了独特的价值.
但价值观并不是随机的.要获得更多随机值,您应该通过设置第二个参数more_entropy来添加更多熵.在这种情况下,PHP的内部线性同余生成器 php_combined_lcg(参见lgc.c的源代码)用于生成一个附加在末尾的伪随机数,增加大约30位的附加熵以使它们更随机.
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |