获取文件的md5值

  • hitler
    了解作者
  • C/C++
    开发工具
  • 804B
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-05-29 15:49
    上传日期
此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中
获取文件getMd5_2012.zip
  • getMd5.cpp
    1.9KB
内容介绍
char* GetMD5(char *in) { BOOL bResult = FALSE; HCRYPTPROV hProv = 0; HCRYPTHASH hHash = 0; HANDLE hFile = NULL; BYTE rgbFile[BUFSIZE]; DWORD cbRead = 0; BYTE rgbHash[MD5LEN]; DWORD cbHash = 0; CHAR rgbDigits[] = "0123456789abcdef"; hFile = CreateFileA(in, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (INVALID_HANDLE_VALUE == hFile) { return NULL; } if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { CloseHandle(hFile); return NULL; } if (!CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)) { CloseHandle(hFile); CryptReleaseContext(hProv, 0); return NULL; } while (bResult = ReadFile(hFile, rgbFile, BUFSIZE, &cbRead, NULL)) { if (0 == cbRead) { break; } if (!CryptHashData(hHash, rgbFile, cbRead, 0)) { CryptReleaseContext(hProv, 0); CryptDestroyHash(hHash); CloseHandle(hFile); return NULL; } } if (!bResult) { CryptReleaseContext(hProv, 0); CryptDestroyHash(hHash); CloseHandle(hFile); return NULL; } cbHash = MD5LEN; char md5[128]; memset(md5,0,128); if (CryptGetHashParam(hHash, HP_HASHVAL, rgbHash, &cbHash, 0)) { for (DWORD i = 0; i < cbHash; i++) { md5[i*2+0]=rgbDigits[rgbHash[i] >> 4]; md5[i*2+1]=rgbDigits[rgbHash[i] & 0xf]; } } else { CryptDestroyHash(hHash); CryptReleaseContext(hProv, 0); CloseHandle(hFile); return NULL; } CryptDestroyHash(hHash); CryptReleaseContext(hProv, 0); CloseHandle(hFile); return strdup(md5); }
评论
    相关推荐
    • md5算法实现
      md5算法的c语言实现的例子
    • MD5算法VC++
      MD5算法VC++,
    • MD5算法程序
      MD5算法程序,c语言,vc下可用
    • MD5算法
      MD5算法的VC源代码,可用于数据压缩和校验。
    • md5算法
      md5算法,没用security这个包,用security这个包两种方法都有
    • md5 算法
      来源于grub-0.97中的md5算法。里面有测试函数,很好用。
    • MD5算法源码
      MD5算法在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。首先填充消息使其长度恰好为一个比512位的倍数仅小64...
    • verilog MD5算法
      verilog MD5 MD5算法在嵌入式上的应用。 可仿真验证。 verilog MD5 MD5算法在嵌入式上的应用。 可仿真验证。
    • md5算法
      一个简单的MD5加密,30多行代码。
    • md5算法
      md5算法