c++如何使用openssl接口來生成隨機數(shù)
c++使用openssl接口來生成隨機數(shù)
openssl是一個用來進行加密和解密的常用接口
里面也有產(chǎn)生隨機數(shù)的功能,接下來就來實現(xiàn)一下該功能
產(chǎn)生隨機數(shù)的代碼十分容易
但配置過程十分繁瑣,配置過程是后面實現(xiàn)openssl進行加密和解密操作的必不可少的一步
首先應該下載openssl的資源文件,包含include,bin和lib三個文件夾,下載之后,在該三個文件夾的同等目錄下創(chuàng)建src文件,在src文件中就可以創(chuàng)建vs項目了,我是使用的vs2019。
如下圖所示:

在該位置創(chuàng)建項目:

創(chuàng)建新項目完成后,寫出下來下面的代碼是完全沒有問題的

但是在包含openssl的rand庫文件時將會發(fā)生錯誤,提示未能包含進來

這時候需要在屬性頁將附加包含目錄加進來,加進來之后就不會報錯了

我們來看一下這個庫文件所在的位置:發(fā)現(xiàn)是在文件夾include里面,

而當前代碼所在的文件夾如下:
所以要…\先去到src文件夾,再…\去到include文件所在的文件夾,然后再include就可以進入到include文件夾中了,即…\include

將其加進來,并且確定,這樣以來,文件夾include里面的所有庫函數(shù)都可以使用了

報錯消失

接下來就可以使用openssl中產(chǎn)生隨機數(shù)的庫函數(shù)了
unsigned char buf[16] = { 0 };//用來接收產(chǎn)生的隨機數(shù)
int re = RAND_bytes(buf, sizeof(buf));在這里我們使用
RAND_bytes(unsigned char* buf,int num)
函數(shù)來產(chǎn)生隨機數(shù),第一個參數(shù)用來接收產(chǎn)生的隨機數(shù),第二個參數(shù)是產(chǎn)生的隨機數(shù)的數(shù)量,返回值是0或1,是1則表示產(chǎn)生隨機數(shù)成功。
寫好代碼之后運行發(fā)現(xiàn)報錯:說剛才使用的函數(shù)不可用,現(xiàn)在想起來還有另外兩個文件夾未使用

在屬性中將將附加庫目錄和附加依賴項加進來


再次運行后還是報錯,提示信息如下:

由于缺少上述文件,我們?nèi)フ乙幌略撐募?,發(fā)現(xiàn)在bin文件夾的x86里面(lib文件夾里面是庫文件,bin文件夾里面是可執(zhí)行的二進制文件)

然后在屬性里面將輸出目錄和工作目錄修改一下即可:


再次運行,運行成功,產(chǎn)生16個隨機數(shù)

總體代碼很少,如下所示:
#include<iostream>
#include<openssl/rand.h>
using namespace std;
int main(int argc, char* argv[])
{
unsigned char buf[16] = { 0 };//用來接收產(chǎn)生的隨機數(shù)
int re = RAND_bytes(buf, sizeof(buf));
for (int i = 0;i < sizeof(buf);i++)
cout << (int)buf[i] << " ";
cout << endl;
getchar();
return 0;
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++:構(gòu)造函數(shù),析構(gòu)函數(shù)詳解
今天小編就為大家分享一篇關(guān)于C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2021-09-09
VS Code C/C++環(huán)境配置教程(無法打開源文件“xxxxxx.h”或者檢測到 #include 錯誤,請更新in
這篇文章主要介紹了VS Code C/C++環(huán)境配置教程(無法打開源文件“xxxxxx.h” 或者 檢測到 #include 錯誤。請更新includePath) (POSIX API),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應用)
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應用)的相關(guān)資料,需要的朋友可以參考下2017-06-06

