gpt4 book ai didi

security - 如何生成安全 session ID

转载 作者:行者123 更新时间:2023-12-02 19:19:14 24 4
gpt4 key购买 nike

对于 C++ Web 服务器,我必须生成 session ID。我考虑使用某种随机数和哈希值,以及 session 的初始 IP 地址和时间戳。

这会产生一个合理且不可猜测的 ID 吗?什么是好的随机生成器算法(最好是由 boost-random 实现的算法)?

亲切的问候托斯顿

我的解决方案现在看起来像:

std::string secure_session_generator::operator()( const char* /* network_connection_name */ )
{
std::stringstream out;
out << std::hex << distribution_( generator_ );

return out.str();
}

成员是默认构造的:

    boost::random::random_device                                        generator_;
boost::random::uniform_int_distribution< boost::uint_least64_t > distribution_;

最佳答案

您可以使用此处的示例:Boost example 。然后只需将大小增加到更适合 session ID 的值,例如 64 个字符或其他字符。这样你就不必使用散列或任何东西的计算,并且它已经是可读的。

或者不使用 boost-random 而仅使用 ctime 和 stdio.h

string getRandom(int ip)
{
srand(time(NULL) + ip + rand());
stringstream ss;
for(int i = 0;i < 64;i++)
{
int i = rand() % 127;
while(i < 32)
i = rand() % 127;
ss << char(i);
}
return ss.str();
}

或者,在不使用 IP 的情况下,您可以直接用 rand() 代替 IP,只需确保您用某些东西作为种子 srand 即可。

此外,无论如何,我不是密码学家,因此使用的风险由您自行承担。

关于security - 如何生成安全 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290805/

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