使用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 } 
复制代码

 

 

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

posted @   勿在浮沙筑高台  阅读(1386)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示