首页 > 其他分享 >使用OpenSSL获取文件的MD5值

使用OpenSSL获取文件的MD5值

时间:2023-01-28 09:56:40浏览次数:64  
标签:std ss mdContext OpenSSL 获取 include inStream MD5

1. 基本原理

OpenSSL库提供了MD5的计算, 使用该库计算文件的MD5值

 

2. 实现代码

 
 1 #include <openssl/md5.h>
 2 #include <fstream>
 3 #include <iomanip>
 4 
 5 std::ifstream inStream(fileName, std::ios::binary);
 6 constexpr int bufferSize = 1024 * 128;
 7 char data[bufferSize];
 8 
 9 unsigned char c[MD5_DIGEST_LENGTH]; // MD5值,输出结果
10 
11 if (inStream.is_open())
12 {
13  MD5_CTX mdContext;
14  MD5_Init(&mdContext);
15 
16  while (!inStream.eof())
17   {
18   inStream.read(data, bufferSize);
19   std::streamsize nRecvNum = inStream.gcount();
20   MD5_Update(&mdContext, data, static_cast<int>(nRecvNum));  
21 }
22 
23 MD5_Final(c, &mdContext);
24 
25 inStream.close(); // 关闭文件
26 
27 // 打印输出, 格式化输出
28 std::stringstream ss;
29 ss.fill('0'); // 如果宽度不够, 采用0填充
30 for (int i= 0; i< MD5_DIGEST_LENGTH; i++)
31 {
32 ss << std::setw(2) << std::hex << static_cast<int>(c[i]);
33 }
34 
35 return ss.str();
36             
37 } 

 

 

                      ------------- 勿在浮沙筑高台

标签:std,ss,mdContext,OpenSSL,获取,include,inStream,MD5
From: https://www.cnblogs.com/068XS228/p/17069682.html

相关文章