使用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加密文件或者字符串