我自己封装了一个函数GetMd5(LPCWSTR FileDirectory)。其中调用了windows api:CryptAcquireContext,CryptCreateHash,CryptHashData等。要计算不同文件的md5值,只需在调用此函数时传入不同文件的全路径即可,不需要额外的dll。示例代码在vs2008中测试通过:
#include "stdafx.h"
#include <iostream>
#include "windows.h"
using namespace std;
void GetMd5(LPCWSTR FileDirectory)
{
HANDLE hFile=CreateFile(FileDirectory,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
if (hFile==INVALID_HANDLE_VALUE) //如果CreateFile调用失败
{
cout<<"CreateFile go wrong :"<<GetLastError()<<endl; //提示CreateFile调用失败,并输出错误号。visual studio中可在“工具”>“错误查找”中利用错误号得到错误信息。
CloseHandle(hFile);
}
HCRYPTPROV hProv=NULL;
if(CryptAcquireContext(&am