在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...