C++使用API计算MD5值
来源:互联网 发布:mac web开发工具 编辑:程序博客网 时间:2024/05/29 15:34
关于MD5值的介绍网上有很多资料,在此不再介绍。
本文主要通过使用Windows提供的API计算MD5值。
主要API函数:
头文件: Wincrypt.h
1、CryptAcquireContext(https://msdn.microsoft.com/en-us/library/windows/desktop/aa379886%28v=vs.85%29.aspx)
2、CryptCreateHash(https://msdn.microsoft.com/en-us/library/windows/desktop/aa379908%28v=vs.85%29.aspx)
3、CryptHashData(https://msdn.microsoft.com/en-us/library/windows/desktop/aa380202%28v=vs.85%29.aspx)
4、CryptGetHashParam(https://msdn.microsoft.com/en-us/library/windows/desktop/aa379947%28v=vs.85%29.aspx)
5、CryptDestroyHash(https://msdn.microsoft.com/en-us/library/windows/desktop/aa379917%28v=vs.85%29.aspx)
6、CryptReleaseContext(https://msdn.microsoft.com/en-us/library/windows/desktop/aa380268%28v=vs.85%29.aspx)
(函数详情可直接点击上面链接查看)
例子:
CString CMTFileSender::ComputeMd5Value(LPCTSTR lpszFilePath){ CString strMd5 = _T(""); CFile * pFileS = NULL; try { pFileS = new CFile(lpszFilePath, CFile::modeRead | CFile::shareDenyNone); } catch (CFileException* pEx) { pEx->ReportError(); pEx->Delete(); } if (pFileS) { ULONGLONG dwLength = pFileS->GetLength(); HCRYPTPROV hProv = NULL; if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { HCRYPTHASH hHash; if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) { while (dwLength > 0) { BYTE pbufRead[0x1000]; UINT nReadNum = sizeof(pbufRead); nReadNum = pFileS->Read(pbufRead, nReadNum); if (nReadNum) { BOOL bHash = CryptHashData(hHash, pbufRead, nReadNum, 0); dwLength -= nReadNum; } else break; } if (dwLength == 0) { DWORD dwSize = 0; DWORD dwLen = sizeof(dwSize); CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE*)(&dwSize), &dwLen, 0); BYTE* pHash = new BYTE[dwSize]; dwLen = dwSize; CryptGetHashParam(hHash, HP_HASHVAL, pHash, &dwLen, 0); CStringA Md5; for (DWORD i = 0; i < dwLen; ++i) { Md5.AppendFormat("%02X", pHash[i]); } strMd5 = CString(Md5); } CryptDestroyHash(hHash); } CryptReleaseContext(hProv, 0); } pFileS->Close(); delete pFileS; } return strMd5;}
- C++使用API计算MD5值
- 使用webrtc中的MD5 API计算某个文件的MD5值
- C语言计算文件的md5值
- C语言计算文件MD5值
- 纯C MD5计算
- 用windows api 计算文件的md5值
- 使用PHP和Python计算MD5值
- 计算文件MD5 (C++)
- C语言计算文件MD5
- 使用Windows系统API计算数据和文件的MD5哈希值,支持大文件
- [代码实例][C语言]计算文件的MD5值
- C语言实现计算文件和字符串md5值
- Java MD5值计算
- 计算MD5值方法
- 文件MD5值计算
- md5值计算方式
- IOS计算MD5值
- 计算 md5 值
- ubuntu下使用zip只存储不压缩命令
- spring boot 使用spring AOP实现拦截器
- JSP乱码问题
- spring和resteasy集成,构建restful风格服务
- VBA CurrentRegion属性示例
- C++使用API计算MD5值
- 8.Hibernate Open Session In View模式
- Delphi 停靠技术的应用1(在一个窗体中停靠另一个窗体)
- <LeetCode> 题113:删除排序链表中的重复元素2
- JQGrid
- VBA 常用的VBA短句(带注释)
- jQuery加载全部页面完成前的loading效果
- iOS开发常用的东西
- PHP获取当期前运行文件的路径,名字,服务器路径