gpt4 book ai didi

php - PHP 中的长随机字符串生成器

转载 作者:可可西里 更新时间:2023-10-31 23:53:50 25 4
gpt4 key购买 nike

有谁知道如何在 PHP 中生成一个长的(例如 280 个字符)随机 string 而不必使用将遍历字符 280 次的 for 循环?我需要它来创建自定义 session ID。

在我看来,PHPSESSID 不够安全,因为它太短而且不太随机。我知道 Facebook 和 Twitter,使用长 session ID(分别为 150、550 个字符)。

可以选择使用 MD5 字符串或 Bcrypt 加密不同的字符串,例如 PHPSESSID、主机、用户代理等。但我不确定这是正确的做法。

最佳答案

如果您问这样的问题,可能意味着您对密码学或安全性一无所知。尝试生成“长随机字符串”,因为正如您所说,“PHPSESSID 不够安全”可能会导致您采用自定义且不安全的实现。

生成随机字符串不可能,至少对于您当前的硬件而言并非如此:您可能会近似于一个公平的伪随机生成器,但这仅对教育目的有用。

PHP 的 Session ID 生成算法相当高效;如果您认为它不够安全,那么您可能会浪费时间让它变得更好。如果您正在寻找最大的安全性(例如使用客户端证书),您可能希望使用不同的身份验证机制。

如果 Twitter、Facebook 或其他具有类似流量的网站使用更长的 session ID,这可能不是因为它更安全(在某种程度上),而是因为它避免了冲突。

最后,如果您想要更长的 session ID 而不想编写自己的算法,您应该使用以下 PHP 配置指令:

session.hash_function它可以采用 PHP 已知的任何哈希算法。

您可能还想使用 session.bits_per_characters缩短或延长字符串。请注意,如果这样做,字符串可能会更长或更短,但数据保持不变——只是表示方式不同(基数 16、基数 32 等)

附加信息:

您还可以通过使用自定义源(文件)和设置种子的长度来增加熵:

ini_set("session.hash_function", "sha512");
ini_set("session.bits_per_charater", 4); // 4 means hex
ini_set("session.entropy_file", "/dev/urandom");
ini_set("session.entropy_length", "512");

关于php - PHP 中的长随机字符串生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12885336/

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