使用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 }
------------- 勿在浮沙筑高台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律