OPENSSL随机数生成 例程

来源:互联网 发布:李娜 歌手 知乎 编辑:程序博客网 时间:2024/05/20 23:32

这次看看如何使用openssl提供的api来生成随机数

我们来生成一个DWORD类型,也就是四个字节的随机数,见如下例程:

#include <memory.h>

#include <stdio.h>
#include <stdlib.h>
#include <openssl/rand.h>
bool GetDWORDRnd(DWORD & rnd)
{
    int chunk=4;

    int r;

    //RAND_screen();  //可以将当前的屏幕内容作为生成随机数的种子,但这种方式生成的速度稍慢

    //只需要一行代码即可,第一个参数是存放随机数的缓冲区,第二个参数是生成的随机数的字节数

    r = RAND_bytes((unsigned char *)&rnd, chunk);
    if (r <= 0)
        return false;
    else
        return true;        
}

int main(int argc,char ** argv)
{
    DWORD rndnum;
    if(GetDWORDRnd(rndnum))
    printf("%02X\r\n",rndnum);
    return 0;
}