使用OpenSSL获取文件的MD5值

Posted 勿在浮沙筑高台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用OpenSSL获取文件的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  

 

 

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

以上是关于使用OpenSSL获取文件的MD5值的主要内容,如果未能解决你的问题,请参考以下文章

linux下使用openssl和md5sum加密文件或者字符串

shell脚本获取MD5值

获取文件的md5值

openssl evp 哈希算法(md5,sha1,sha256)

如何用vba获取文件的MD5 Hash值?

openssl md5