相关疑难解决方法(0)

随机数生成最安全的种子是什么?

种子随机数生成器最安全的熵源是什么?此问题与语言和平台无关,适用于网络上的任何计算机.理想情况下,我正在寻找托管公司提供的云环境或服务器中的计算机可用的源.

要牢记两个重要的弱点.使用时间发送随机数发生器违反了CWE-337.使用小种子空间将违反CWE-339.

security random cryptography

62
推荐指数
6
解决办法
2万
查看次数

种子比时间更好(0)?

我知道时间(0)通常用于播种随机数生成器,并且当程序每秒运行一次以上时它只会成为一个问题.我想知道在生成随机数时要考虑哪些更好的种子.我在Windows上阅读了有关GetTickCount,timeGetTime和QueryPerformanceCounter的内容.几乎所有的操作都能满足这些要求,还是有更好的播种选择?

这是一个使用boost库的快速代码示例:

#include <iostream>
#include <boost/random.hpp>
using namespace std;
using namespace boost;

int main()
{
    mt19937 randGen(42);
    uniform_int<> range(0,100);
    variate_generator<mt19937&, uniform_int<> > GetRand(randGen, range);

    for (int i = 0; i < 30; ++i)
        cout << GetRand() << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ random boost

9
推荐指数
3
解决办法
4204
查看次数

Delphi有加密安全的PRNG库吗?

任何人都可以为Delphi(Win32)推荐一个加密安全的伪随机数生成器库吗?

可以是免费的或商业的,但理想情况下是一个活跃的项目.我希望它包含源代码.

delphi random

9
推荐指数
2
解决办法
2936
查看次数

CryptGenRandom熵

CryptGenRandom是Windows中CryptoAPI中的随机数生成器函数.这个随机数生成器有多少熵?我已经看了很多,但我找不到它.提前致谢.

windows random winapi entropy

7
推荐指数
1
解决办法
2802
查看次数

srand(time(NULL))生成类似的结果

我不明白为什么srand()在运行之间生成如此相似的随机数!

我试图运行以下代码

srand ( time(NULL) );
int x = rand();
cout << x << endl;
Run Code Online (Sandbox Code Playgroud)

然而,不是一个适当的随机数,我总是得到几乎相同的数字,随着时间的推移,这个数字正在缓慢增长.所以我得到的数字如:11669,11685,11701,11714,11731.

我究竟做错了什么?

我正在使用Visual Studio 2010 SP1.

好吧,srand()真的那么简单吗?我的意思是如何将其称为随机函数?

srand(1) => rand() = 41
srand(2) => rand() = 45
srand(3) => rand() = 48
srand(4) => rand() = 51
....
Run Code Online (Sandbox Code Playgroud)

c++ random visual-studio-2010 visual-studio

3
推荐指数
2
解决办法
2万
查看次数