注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

MD5计算  

2013-12-30 16:53:45|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用系统里面的advapi32里的MD5函数计算。

C:\TEMP\vc>md5 1
C4CA4238A0B923820DCC509A6F75849B

C:\TEMP\vc>md5 1234567
FCEA920F7412B5DA7BE0CF42B8C93759

源码md5.cpp如下:

//MD5计算
//cl md5.cpp
#include <windows.h>
#include <stdio.h>

typedef void (WINAPI *MD5INIT)(unsigned char *);
typedef void (WINAPI *MD5UPDATE)(unsigned char *,unsigned char *,unsigned int);
typedef void (WINAPI *MD5FINAL)(unsigned char *);

MD5INIT MD5Init;
MD5UPDATE MD5Update;
MD5FINAL MD5Final;

int init(void)
{
 HMODULE h;
 h=LoadLibrary("advapi32.dll");
 if (h==0) return 0;
 MD5Init=(MD5INIT)GetProcAddress(h,"MD5Init");
 MD5Update=(MD5UPDATE)GetProcAddress(h,"MD5Update");
 MD5Final=(MD5FINAL)GetProcAddress(h,"MD5Final");
 return 1;
}

void md5(char * str)
{
 int i;
 unsigned char buf[0x400];

 memset(buf,0,0x400);

 MD5Init(buf);
 MD5Update(buf,(unsigned char *)str,strlen(str));
 MD5Final(buf);

 for (i=0; i<0x10; i++)
 {
  printf("%02X",buf[0x58+i]);
 }

 printf("\n");

}

int main(int argc, char *argv[])
{
 if (argc<2)
 {
  printf("帮助:MD5计算\n");
  printf("md5 string\n");
  return 0;
 }
 
 if (init()==0) return 0;

 md5(argv[1]);

 return 0;
}

  评论这张
 
阅读(131)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017