使用openssl的md5庫

2021-06-21 01:03:21 字數 1635 閱讀 2995



在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包。這三個函式不需要解釋,看下面乙個例子就知道:

#include #include #include #include using namespace std;

int main()

; if(fd == null)

int len;

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(int i = 0; i < 16; i++)

cout << hex << setw(2) << setfill('0') << (int)md5[i];

cout << endl;

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" 結果對比,會發現是一樣的。

int getfilemd5(std::string strfile, std::string& strmd5)

if (stfileinfo.st_size < nbuffersize)

// open file

file *fp = fopen(strfile.c_str(), "r");

if(fd == null)

unsigned char *pdatabuffer = (unsigned char*)malloc(nbuffersize);

if(null == pdatabuffer)

// get md5

md5_init(&ctx);

while(true)

md5_update(&ctx, pdatabuffer, nlen);

} md5_final(szmd5, &ctx);

// md5 to string

strmd5 = "";

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

fclose(fp);

if(null != pdatabuffer)

return 0;

}

使用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...