OpenSSL測試 隨機數

2022-10-10 08:57:11 字數 2435 閱讀 6169

0. 在openeuler(推薦)或ubuntu或windows(不推薦)中完成下面任務

1. 使用openssl定義乙個私有函式 static int getrandom(char *r, int length), 獲取length個位元組的隨機數(5『)

2. 把上述函式整合到src中的sdf.c中的sdf_generaterandom中(5')

3. 在test中的main.c呼叫sdf_generaterandom進行測試,至少測試1個位元組,5個位元組,20個位元組三種情況。(5『)

4. **提交**(或**鏈結)和執行結果截圖**

#ifndef __sdf_h

#define __sdf_h

//定義裝置資訊結構

typedef struct deviceinfo_stdeviceinfo;

// error code

#define sdr_ok 0x0 //操作成功

//********************************

//裝置管理

//********************************

/*功能:開啟密碼裝置。

引數∶phdevicehandle[out] 返回裝置控制代碼

返回值∶

0 成功

非0 失敗,返回錯誤**

*/int sdf_opendevice(void ** phdevicehandle);

/*功能∶關閉密碼裝置,並釋放相關資源。

引數∶hdevicehandle[in] 已開啟的裝置控制代碼

返回值∶

0(sdr_ok) 成功

非0 失敗,返回錯誤**

*/int sdf_closedevice(void *hdevicehandle);

/*功能∶獲取密碼裝置能力描述。;

引數∶hsesionhandle[in]與裝置建立的會話控制代碼

pstdevceinfo [out]裝置能力描述資訊,內容及格式見裝置資訊定義

返回值∶

0(sdr_ok) 成功

非0 失敗,返回錯誤**

*/int sdf_getdeviceinfo( void * hsessionhandle,

deviceinfo * pstdeviceinfo);

/*功能:獲取指定長度的隨機數

引數: uilength[in] 欲獲取的隨機數長度

pucrandom[ out] 緩衝區指標,用於存放獲取的隨機數

返回值∶

00(sdr_ok) 成功

非0 失敗,返回錯誤**

*/int sdf_generaterandom (void * hsessionhandle, unsigned int uilength, unsigned char * pucrandom);

#endif

#include "sdf.h"

#include #include #include #include #include //********************************

//裝置管理

//********************************

int sdf_opendevice(void ** phdevicehandle)

int sdf_closedevice(void *hdevicehandle)

int sdf_getdeviceinfo( void * hsessionhandle, deviceinfo * pstdeviceinfo)

static int getrandom(char *r,int length)

int sdf_generaterandom (void * hsessionhandle,unsigned int uilength,unsigned char * pucrandom)

*(pucrandom+i)='\0';

bn_free(bn); //釋放bignum結構

return sdr_ok;

}

#include "sdf.h"

#include #include int main() else

deviceinfo testdi;

ret = sdf_getdeviceinfo(pdh, &testdi);

if(ret != sdr_ok)

else

else

for(int i=0;i<1;i++)

printf("the random is :%s\n",string);

ret = sdf_closedevice(*pdh);

if(ret != sdr_ok)

else }

}

隨機數 偽隨機數

隨機數 偽隨機數 rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...

隨機數 科普 真隨機數和偽隨機數

位元幣使用者很喜歡討論 非對稱加密 橢圓曲線 量子計算機 這類高深莫測的話題,然後再以一種非常莫名其妙的方式把幣弄丟,比如說 隨機 隨機很重要,對於位元幣這種密碼學電子貨幣來說,尤其重要。可惜社群內對於隨機的討論並不多,導致很多人缺乏正確的認識,因此,我們今天就和大家聊聊隨機。說到隨機,有兩個必須要...