【发布时间】:2023-04-06 17:33:02
【问题描述】:
有谁知道如何在 PHP 中生成一个长的(例如 280 个字符)随机 string 而不必使用将循环字符 280 次的 for 循环?我需要它来创建自定义会话 ID。
在我看来,PHPSESSID 不够安全,它太短且不太随机。我知道 Facebook 和 Twitter,使用长会话 ID(分别为 150、550 个字符)。
可以选择使用MD5 字符串或Bcrypt 加密不同的字符串,例如PHPSESSID、主机、用户代理等,但我不确定这是正确的做法。
【问题讨论】:
-
为什么不使用 for 循环?只需使用一个字符数组并在循环中将它们称为
for ($i = 0; $i < 280; $i++) $buffer .= $characters[rand(0, $charactersLength)]; -
循环有什么问题?如果你想减少循环次数,你总是可以连接几个哈希。
-
循环没有问题,它只是使用一些内存,在流量较高的网站上,这可能会减慢加载时间。
-
如果你不想使用 for 循环,你总是可以使用 while 循环来代替
-
我不想在这里过于直率,但是如果您的网站因一个微不足道的 for 循环迭代 280 次而变慢,那么您就会遇到严重问题。在大多数现代硬件上,我们所说的实际上是 100 微秒...A Quick Benchmark....