测试文件test.cpp:
#include "md5.h"
#include <iostream>
using namespace std;
void PrintMD5(const string &str, MD5 &md5) {
cout << "MD5("" << str << "") = " << md5.toString() << endl;
}
string FileDigest(const string &file) {
ifstream in(file.c_str(), ios::binary);
if (!in)
return "";
MD5 md5;
std::streamsize length;
char buffer[1024];
while (!in.eof()) {
in.read(buffer, 1024);
length = in.gcount();
if (length > 0)
md5.update(buffer, length);
}
in.close();
return md5.toString();
}
int main() {
cout << MD5("abc").toString() << endl;
cout << MD5(ifstream("D:test.txt")).toString() << endl;
cout << MD5(ifstream("D:test.exe", ios::binary)).toString() << endl;
cout << FileDigest("D:test.exe") << endl;
MD5 md5;
md5.update("");
PrintMD5("", md5);
md5.update("a");
PrintMD5("a", md5);
md5.update("bc");
PrintMD5("abc", md5);
md5.update("defghijklmnopqrstuvwxyz");
PrintMD5("abcdefghijklmnopqrstuvwxyz", md5);
md5.reset();
md5.update("message digest");
PrintMD5("message digest", md5);
md5.reset();
md5.update(ifstream("D:test.txt"));
PrintMD5("D:test.txt", md5);
return 0;
}
类MD5封装了与MD5相关的操作,其有
4个构造函数:
MD5(); //默认构造函数
MD5(const void *input, size_t length); //输入内存地址与长度信息的构造函数
MD5(const string &str); //输入字符串的构造函数
MD5(ifstream &in); //输入流的构造函数
3个Update函数:
void update(const void *input, size_t length); //往MD5对象内添加内存块
void update(const string &str); //添加字符串
void update(ifstream &in); //添加流
const byte* digest(); //计算MD5码,并返回指向它的指针
string toString(); //计算MD5,并返回其对应的字符串
void reset(); //重置,
test.cpp文件内的main函数描述了MD5类的用法。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
注:相关教程知识阅读请移步到C++教程频道。










