c++ 计算一个文件的md5值的demo
时间: 2024-02-20 17:56:20 浏览: 20
下面是一个使用openssl库计算文件md5值的C++ demo:
```c++
#include <iostream>
#include <cstring>
#include <openssl/md5.h>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
if(argc < 2)
{
cout << "Usage: " << argv[0] << " filename" << endl;
return 1;
}
const char* filename = argv[1];
ifstream file(filename, ios::binary);
if(!file)
{
cout << "Failed to open file: " << filename << endl;
return 1;
}
// 获取文件大小
file.seekg(0, ios::end);
int filesize = file.tellg();
file.seekg(0, ios::beg);
// 读取文件内容
char* buffer = new char[filesize];
file.read(buffer, filesize);
// 计算md5值
unsigned char md5_value[MD5_DIGEST_LENGTH];
MD5((const unsigned char*)buffer, filesize, md5_value);
// 打印md5值
for(int i=0; i<MD5_DIGEST_LENGTH; i++)
{
printf("%02x", md5_value[i]);
}
cout << endl;
delete[] buffer;
return 0;
}
```
编译命令:
```
g++ -o md5_demo md5_demo.cpp -lcrypto
```
运行命令:
```
./md5_demo filename
```
其中 `filename` 为要计算md5值的文件名。