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

 更新时间:2024年10月12日 09:45:38   作者:听风的倾诉  
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;
}

总结

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

相关文章

  • 深入解析 C++中std::stoul 函数

    深入解析 C++中std::stoul 函数

    std::stoul是 C++ 标准库中的一个字符串转换函数,它用于将 std::string 或 std::wstring 转换为 unsigned long 类型的整数,下面就来介绍一下
    2025-04-04
  • C语言的函数概念与规则你了解吗

    C语言的函数概念与规则你了解吗

    这篇文章主要介绍了C语言中的函数概念与规则,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • C++将CBitmap类中的图像保存到文件的方法

    C++将CBitmap类中的图像保存到文件的方法

    这篇文章主要介绍了C++将CBitmap类中的图像保存到文件的方法,涉及C++导出资源文件的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C语言实现三子棋

    C语言实现三子棋

    这篇文章主要为大家详细介绍了C语言实现三子棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C++:构造函数,析构函数详解

    C++:构造函数,析构函数详解

    今天小编就为大家分享一篇关于C++构造函数和析构函数的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-09-09
  • C 语言环境设置详细讲解

    C 语言环境设置详细讲解

    本文主要介绍C 语言环境设置,在不同的系统平台上,C语言的环境设置不同,这里帮大家整理了Liunx, UNIX,Windows 上安装C语言环境,有开始学习C语言的朋友可以参考下
    2016-08-08
  • VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h”或者检测到 #include 错误,请更新includePath)(POSIX API)

    VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h”或者检测到 #include 错误,请更新in

    这篇文章主要介绍了VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h” 或者 检测到 #include 错误。请更新includePath) (POSIX API),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 数据结构 中数制转换(栈的应用)

    数据结构 中数制转换(栈的应用)

    这篇文章主要介绍了数据结构 中数制转换(栈的应用)的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++ HLSL实现简单的图像处理功能

    C++ HLSL实现简单的图像处理功能

    本文主要介绍了HLSL实现简单的图像处理功能的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 深入讲解Socket原理

    深入讲解Socket原理

    这篇文章深入的讲解Socket原理,并附带实例代码。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-12-12

最新评论