日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用openssl的md5库

發布時間:2023/11/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用openssl的md5库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/sinat_35297665/article/details/78244523

在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?<openssl/md5.h>??
  • #include?<iostream>??
  • #include?<cstdio>??
  • #include?<iomanip>??
  • #include?<stdlib.h>??
  • using?namespace?std;??
  • ??
  • ??
  • int?main()??
  • {??
  • ????????FILE?*fd=fopen("test","r");??
  • ????????MD5_CTX?c;??
  • ????????unsigned?char?md5[17]={0};??
  • ????????if(fd?==?NULL)??
  • ????????{??
  • ????????????????cout?<<?"open?failed"?<<?endl;??
  • ????????????????return?-1;??
  • ????????}??
  • ????????int?len;??
  • ????????unsigned?char?*pData?=?(unsigned?char*)malloc(1024*1024*1024);??
  • ????????if(!pData)??
  • ????????{??
  • ????????????????cout?<<?"malloc?failed"?<<?endl;??
  • ????????????????return?-1;??
  • ????????}??
  • ????????MD5_Init(&c);??
  • ????????while(?0?!=?(len?=?fread(pData,?1,?1024*1024*1024,?fd)?)?)??
  • ????????{??
  • ????????????????MD5_Update(&c,?pData,?len);??
  • ????????}??
  • ????????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 testmd5 -lcrypto -lssl

    生成testmd5后,我們把一個300多M的test文件放到與testmd5一個目錄。并把testmd5生成的結果和linux命令"md5sum test" 結果對比,會發現是一樣的。如下圖:



    有興趣可以參考openssl源碼



    總結

    以上是生活随笔為你收集整理的使用openssl的md5库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。