当前位置:编程学习 > 网站相关 >>

Linux下调用openssl的md5类生成文件和字符串md5

找个能使用的c++调用openssl的代码都这么难,自己写了个,记录下。

以下代码在centos5下测试可用。

view sourceprint?01 //============================================================================ 

02 // Name        : m d 5.cpp 

03 // Author      : Neeao 

04 // Version     : 

05 // Copyright   : http://Neeao.com 

06 //============================================================================ 

07   

08 #include <iostream> 

09 #include <openssl/<A onclick="tagshow(md5);return false;" href="md5.h>http://neeao.com/tag/md5/">md5</A>.h> 

10 #include <fstream> 

11   

12 using namespace std; 

13 /** 

14  * 字符串md5 

15  */

16 string string_md5(string str) 

17 { 

18         unsigned char md[16]; 

19         char tmp[33]={}; 

20         string hash=""; 

21         MD5((const unsigned char*)str.c_str(), str.size(), md); 

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

23                 sprintf(tmp, "%02X", md[i]); 

24                 hash+=(string)tmp; 

25         } 

26         return hash; 

27 } 

28 /** 

29  * 文件 md5 

30  */

31 string file_md5(string file_name) 

32 { 

33         MD5_CTX md5; 

34         unsigned char md[16]; 

35         char tmp[33]={}; 

36         int length,i; 

37         char buffer[1024]; 

38         string hash=""; 

39         MD5_Init(&md5); 

40         ifstream fin(file_name.c_str(),ios::in|ios::binary); 

41         while(!fin.eof()) 

42             { 

43                         fin.read(buffer, 1024); 

44                         length = fin.gcount(); 

45                         if (length > 0) { 

46                             MD5_Update(&md5,buffer, length); 

47                         } 

48             } 

49             MD5_Final(md,&md5); 

50             for(i=0; i<16; i++){ 

51                     sprintf(tmp, "%02X", md[i]); 

52                     hash+=(string)tmp; 

53             } 

54             return hash; 

55 } 

56 int main() { 

57         string file_name = "/root/install.log"; 

58         cout<<file_md5(file_name)<<endl; 

59         cout<<string_md5(file_name)<<endl; 

60         return 0; 

61 }

补充:综合编程 , 安全编程 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,