C++ rand的安全性分析

使用Fortify做源码审计的时候,经常会爆出rand()函数不随机,为什么不随机呢?下面来看看代码。

多次运行以下程序,会发现多次运行的结果都是相同的,说明种子发生器是固定的。因此需要增加种子的随机性。引入srand((int)time(0) )函数,但srand函数每次只能调用一次?由于计算机运行速度快,srand函数的种子还来不及改变。

不加srand函数

#include
#include
#include 

using namespace std;

int main()
{
    int i;
    cout << "On this computer,the RAND_MAX is " << RAND_MAX <
C++ rand的安全性分析_第1张图片
image.png

你可能感兴趣的:(C++ rand的安全性分析)