gpt4 book ai didi

java - 如果在网络服务器上运行,rand(时间戳)如何工作?

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

在研究一些安全问题时,有一个问题是可以猜测网络服务器中运行的rand(时间戳)的某些序列的生成。他说我们的第一个目标应该使服务器崩溃(假设服务器将在 1 分钟内启动),我们可以将我们的生成器与服务器同步,然后网络服务器生成的 rand(时间戳)可以与我们的生成器相同。

我很困惑,如果我们有一个函数 rand(时间戳),它是否会依赖于系统时间戳或服务器“正常运行时间”时间戳?

附:问一个一般性问题 - 如果它是在 JAVA/PHP/ASP 中,则不依赖。只是问网络服务器/编译器如何处理此类代码?

可能是它的模糊问题,但我想澄清一下。

最佳答案

许多 rand() 实现的默认行为是,如果未提供种子值,则使用系统时间作为种子。即使这不是默认行为,也几乎可以保证应用程序会将系统时间传递给 srand() ,作为随机序列的种子。

因此,如果您知道精确的系统时间,则可以生成与远程系统调用 rand() 生成的序列相同的序列。几年前,一家在线赌场遭到使用这种随机序列预测技术的攻击。<​​/p>

解决方案有两个方面:从不可预测的硬件源获取种子(有商业单位)并使用可用的最长伪数生成器。

关于硬件生成器的主题有很多问题,例如:

关于java - 如果在网络服务器上运行,rand(时间戳)如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248858/

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