md5介绍:https://zhuanlan.zhihu.com/p/137348731
计算md5参考:https://blog.csdn.net/A_L_A_N/article/details/106694692
示例图片
在ubuntu系统的终端利用已有的软件命令计算md5
使用openssl计算
终端直接计算
popen调用openssl
popen用法:c++调系统命令-popen方法
下面代码里的split函数来自:c++模块化-实现字符串分割
#include <iostream>
#include "diy_lib/pyfunc.h"
using namespace std;
string getMd5(string cmdStr)
{
FILE * fp;
char buffer[200];
fp = popen(cmdStr.c_str(), "r");
fgets(buffer, sizeof(buffer), fp);
string line = buffer;
string md5Value = split(line, ' ')[1];
pclose(fp);
return md5Value.substr(0, md5Value.size()-1);
}
int main()
{
string cmdStr = "openssl md5 0001#_0.jpg";
string md5 = getMd5(cmdStr);
cout << md5 << endl;
}
使用md5sum计算
终端直接计算
popen调用md5sum
下面代码里的split函数来自:c++模块化-实现字符串分割
#include <iostream>
#include "diy_lib/pyfunc.h"
using namespace std;
string getMd5_fromMd5sum(string cmdStr)
{
FILE * fp;
char buffer[200];
fp = popen(cmdStr.c_str(), "r");
fgets(buffer, sizeof(buffer), fp);
string line = buffer;
string md5Value = split(line, ' ')[0];
pclose(fp);
return md5Value;
}
int main()
{
string cmdStr = "md5sum 0001#_0.jpg";
string md5 = getMd5_fromMd5sum(cmdStr);
cout << md5 << endl;
}