美文网首页
C++ rand的安全性分析

C++ rand的安全性分析

作者: Magicknight | 来源:发表于2018-08-04 08:41 被阅读114次

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

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

不加srand函数

#include<iostream>
#include<cstdlib>
#include<ctime> 

using namespace std;

int main()
{
    int i;
    cout << "On this computer,the RAND_MAX is " << RAND_MAX <<endl;
    cout << "Five numbers the rand function generates as follow:" <<endl;
    for (i = 0; i < 5; i++)
        cout << rand() << ";";
    cout << "\n";
    return 0;
}
image.png

相关文章

  • C++ rand的安全性分析

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

  • c++ 11中的随机数 ——random

    背景 C 和 C++ 都依赖一个简单的 C 库函数 rand 来生成随机数rand 函数有一些问题:即使不是大多数...

  • 抽奖摇号系统随机性算法介绍

    1. 摘要 本文分析GO语言包中的"crypto/rand"和"math/rand",芯链HPB系统的区块链随机数...

  • C++中rand()函数的用法

    1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 2、...

  • c++ 6、随机数

    C++ 可以使用内置库CSTDLIB()中的srand()和rand()函数来产生随机数。r...

  • C语言debug

    rand()详解以及srand((unsigned)time(NULL))放在循环体内的结果分析[https://...

  • rand 和srand

    学习essential C++时看到了rand()和srand(),有些不解,找到一篇文章讲解的很清楚,故搬运过来...

  • 用rand7生成rand10的随机数

    实验过程 运行结果 统计输出 统计结果 由此可得rand10=(rand7+rand7+rand7+rand7+r...

  • MySQL Order By Rand()效率分析

    最近研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就...

  • php rand

    实例 生成随机数: echo(rand() . ""); echo(rand() . ""); echo(rand...

网友评论

      本文标题:C++ rand的安全性分析

      本文链接:https://www.haomeiwen.com/subject/cuppvftx.html