gpt4 book ai didi

PHP - uniqid ("",true) 与 uniqid ("")+mt_rand()

转载 作者:行者123 更新时间:2023-11-29 04:03:51 29 4
gpt4 key购买 nike

这两种生成顺序但有点独特的数字的方法之间的主要区别是什么?我想使用这样的数字作为 MySQL 数据库中的唯一用户 ID,以及作为密码的盐。

我的理解是,出于集群和索引的原因,这些 ID 应该是连续的(我意识到在某些情况下,随机字符串会使在同一微秒内出现的两个条目不连续,但希望这可以忽略不计。)

最佳答案

在不使用更多熵的情况下,uniqid基本上执行以下操作(参见 source of uniqid.c ):

$time = explode(' ', microtime(false));
return sprintf('%s%08x%05x', $prefix, $time[1], $time[0] * 1000000);

所以它基本上以微秒为单位获取当前时间并将它们转换为十六进制表示并将其附加到前缀。这确实已经提供了唯一值。

但是这些值并不是完全随机的。为了获得更多的随机值,您应该通过设置第二个参数more_entropy 来添加更多的熵。在这种情况下,PHP 的内部 linear congruential generator php_combined_lcg(参见 source of lgc.c)用于生成附加在末尾的伪随机数,添加大约 30 位的额外熵以使其更加随机。

关于PHP - uniqid ("",true) 与 uniqid ("")+mt_rand(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5498492/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com