C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > c++使用openssl接口来生成随机数

c++如何使用openssl接口来生成随机数

作者:听风的倾诉

OpenSSL是一个强大的加密库,不仅支持加密解密,还能生成随机数,设置过程包括下载资源文件、配置项目及修改属性页等步骤,确保库文件正确包含,在Visual Studio中正确配置后,可使用RAND_bytes函数生成随机数,此过程需要注意文件路径和附加目录的设置

c++使用openssl接口来生成随机数

openssl是一个用来进行加密和解密的常用接口

里面也有产生随机数的功能,接下来就来实现一下该功能

产生随机数的代码十分容易

但配置过程十分繁琐,配置过程是后面实现openssl进行加密和解密操作的必不可少的一步

首先应该下载openssl的资源文件,包含include,bin和lib三个文件夹,下载之后,在该三个文件夹的同等目录下创建src文件,在src文件中就可以创建vs项目了,我是使用的vs2019。

如下图所示:

在该位置创建项目:

创建新项目完成后,写出下来下面的代码是完全没有问题的

但是在包含openssl的rand库文件时将会发生错误,提示未能包含进来

这时候需要在属性页将附加包含目录加进来,加进来之后就不会报错了

我们来看一下这个库文件所在的位置:发现是在文件夹include里面,

而当前代码所在的文件夹如下:

所以要…\先去到src文件夹,再…\去到include文件所在的文件夹,然后再include就可以进入到include文件夹中了,即…\include

将其加进来,并且确定,这样以来,文件夹include里面的所有库函数都可以使用了

报错消失

接下来就可以使用openssl中产生随机数的库函数了

unsigned char buf[16] = { 0 };//用来接收产生的随机数
int re = RAND_bytes(buf, sizeof(buf));

在这里我们使用

RAND_bytes(unsigned char* buf,int num)

函数来产生随机数,第一个参数用来接收产生的随机数,第二个参数是产生的随机数的数量,返回值是0或1,是1则表示产生随机数成功。

写好代码之后运行发现报错:说刚才使用的函数不可用,现在想起来还有另外两个文件夹未使用

在属性中将将附加库目录和附加依赖项加进来

再次运行后还是报错,提示信息如下:

由于缺少上述文件,我们去找一下该文件,发现在bin文件夹的x86里面(lib文件夹里面是库文件,bin文件夹里面是可执行的二进制文件)

然后在属性里面将输出目录和工作目录修改一下即可:

再次运行,运行成功,产生16个随机数

总体代码很少,如下所示:

#include<iostream>
#include<openssl/rand.h>
using namespace std;
int main(int argc, char* argv[])
{
	unsigned char buf[16] = { 0 };//用来接收产生的随机数
	int re = RAND_bytes(buf, sizeof(buf));
	for (int i = 0;i < sizeof(buf);i++)
		cout << (int)buf[i] << " ";
	cout << endl;
	getchar();
	return 0;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文