使用Windows提供dll实现MD5加密
2012-01-31 14:56
309 查看
#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <assert.h> //--------------------------------------------------------------------------- #pragma argsused typedef struct { ULONG i[2]; /* number of _bits_ handled mod 2^64 */ ULONG buf[4]; /* scratch buffer */ unsigned char in[64]; /* input buffer */ unsigned char digest[16]; /* actual digest after MD5Final call */ } MD5_CTX; #define MD5DIGESTLEN 16 #define PROTO_LIST(list) list /* * MTS: Each of these assumes MD5_CTX is locked against simultaneous use. */ typedef void (WINAPI* PMD5Init) PROTO_LIST ((MD5_CTX *)); typedef void (WINAPI* PMD5Update) PROTO_LIST ((MD5_CTX *, const unsigned char *, unsigned int)); typedef void (WINAPI* PMD5Final )PROTO_LIST ((MD5_CTX *)); PMD5Init MD5Init = NULL; PMD5Update MD5Update = NULL; PMD5Final MD5Final = NULL; const char *Hex2ASC(const BYTE *Hex, int Len) { static char ASC[4096 * 2]; int i; for (i = 0; i < Len; i++) { ASC[i * 2] = "0123456789ABCDEF"[Hex[i] >> 4]; ASC[i * 2 + 1] = "0123456789ABCDEF"[Hex[i] & 0x0F]; } ASC[i * 2] = '\0'; return ASC; } int main(int argc, char* argv[]) { MD5_CTX ctx; unsigned char buf[10] = "123"; HINSTANCE hDLL; if ( (hDLL = LoadLibrary("Cryptdll.dll")) > 0 ) { MD5Init = (PMD5Init)GetProcAddress(hDLL,"MD5Init"); assert(MD5Init!=NULL); MD5Update = (PMD5Update)GetProcAddress(hDLL,"MD5Update"); assert(MD5Update!=NULL); MD5Final = (PMD5Final)GetProcAddress(hDLL,"MD5Final"); assert(MD5Final!=NULL); MD5Init(&ctx); MD5Update(&ctx,buf,8); MD5Final(&ctx); printf("%s \n",Hex2ASC(ctx.digest,16)); } getchar(); return 0; }
相关文章推荐
- 如何在windows下使用ffmpeg开源组提供的dll?
- Windows2008下搭建NFS实现windows空间提供linux使用
- 使用 Jni 调用 Dll 的实现JAVA在cmd控制台刷屏
- 使用cwRsync实现windows下文件定时同步(备份)
- Windows多线程总结(4)-- 线程同步(使用互斥对象实现线程同步 只运行一个对象)
- 在aspx.cs中使用windows.open打开另一个页面,并且实现参数传递
- windows下使用批处理脚本实现多个版本的JDK切换
- Android使用fitsSystemWindows属性实现状态栏【status_bar】的适配方案
- windows 2003 COM+组件使用Delphi实现
- 在Windows命令行中使用vs2005提供的编译、链接等工具对源程序进行处理
- WebSocket使用SuperWebSocket结合WindowsService实现实时消息
- 仿MFC实现c++按名动态创建对象之续(瘦身以及解决其在dll中使用的问题)
- pb下使用Windows提供的datetime控件
- 使用java实现windows与linux文件互相传递
- 使用ICSharpCode.SharpZipLib.dll实现在线解压缩
- C# Note17: 使用Ionic.Zip.dll实现解压缩文件
- Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件
- 使用pscp实现Windows 和 Linux服务器间远程拷贝文件