使用openssl的md5庫

2021-08-09 09:17:18 字數 1246 閱讀 7446

在linux機器上,有乙個命令可以計算出檔案的md5值,那就是md5sum,如果沒有的話,就需要安裝rpm包:coreutils。

現在我們使用openssl的庫也可以方便的計算出檔案的md5值。主要用到的函式是

int md5_init(md5_ctx *c);

int md5_update(md5_ctx *c, const void *data, size_t len);

int md5_final(unsigned char *md, md5_ctx *c);

使用庫前,先需要安裝openssl的rpm包。這三個函式不需要解釋,看下面乙個例子就知道:

[cpp]

view plain

copy

#include 

#include 

#include 

#include 

#include 

using

namespace

std;  

intmain()  

;  if

(fd == null)  

intlen;  

unsigned char

*pdata = (unsigned 

char

*)malloc(1024*1024*1024);  

if(!pdata)  

md5_init(&c);  

while

( 0 != (len = fread(pdata, 1, 1024*1024*1024, fd) ) )  

md5_final(md5,&c);  

for(

inti = 0; i 

cout <

) <

int)md5[i];  

cout <

fclose(fd);  

free(pdata);  

return

0;  

}  

編譯鏈結選項為:

g++ test.cpp -o tes***5 -lcrypto -lssl

生成tes***5後,我們把乙個300多m的test檔案放到與tes***5乙個目錄。並把tes***5生成的結果和linux命令"md5sum test" 結果對比,會發現是一樣的。如下圖:

有興趣可以參考openssl原始碼

使用openssl的md5庫

在linux機器上,有乙個命令可以計算出檔案的md5值,那就是md5sum,如果沒有的話,就需要安裝rpm包 coreutils。現在我們使用openssl的庫也可以方便的計算出檔案的md5值。主要用到的函式是 int md5 init md5 ctx c int md5 update md5 ct...

md5 加密(使用openssl庫C)

參考 依賴openssl裡面的 lcrypto libcrypto.so庫 include unsigned char md5 const unsigned char d,unsigned long n,unsigned char md int md5 init md5 ctx c int md5 ...

Md5使用詳解

b 以二進位制模式讀入檔案內容 t 以文字模式讀入檔案內容 c 根據已生成的md5值,對現存盤案進行校驗 md5sum file root master lianxi md5sum data 0a6de444981b68d6a049053296491e49 data root master lian...