调用AdvApi32.dll中MD5算法的函数。

转载 2004年09月15日 17:27:00

调用AdvApi32.dll中MD5算法的函数。




在Win2000/XP的AdvApi32.dll中实现了基本的Hash和RSA算法,但微软没有给出函数和数据的定义。

下面演示MD5算法的调用。

#include <windows.h>

/* Data structure for MD5 (Message-Digest) computation */
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()
{
 MD5_CTX ctx;
 unsigned char buf[4] = "1233";
 HINSTANCE hDLL;

 if ( (hDLL = LoadLibrary("advapi32.dll")) > 0 )
 {
  MD5Init = (PMD5Init)GetProcAddress(hDLL,"MD5Init");
  MD5Update = (PMD5Update)GetProcAddress(hDLL,"MD5Update");
  MD5Final = (PMD5Final)GetProcAddress(hDLL,"MD5Final");

  MD5Init(&ctx);
  MD5Update(&ctx,buf,4);
  MD5Final(&ctx);

  printf(Hex2ASC(ctx.digest,16));

 

 }
 
 return 0;
}

 

是不是很简单呢。另外AdvApi32.Dll中还有其他的一些算法如RSA,
DSA,SHA等,

以上代码在WinXP SP1/vc6.0 下调试通过

调用AdvApi32.dll中MD5算法的函数

 在Win2000/XP的AdvApi32.dll中实现了基本的Hash和RSA算法,但微软没有给出函数和数据的定义。下面演示MD5算法的调用。#include /* Data structure f...
  • proxyking
  • proxyking
  • 2007年10月24日 15:44
  • 376

Advapi32.dll 函数接口说明

Advapi32.dll 函数接口说明             函数原型                               说...
  • zhoujielun123456
  • zhoujielun123456
  • 2015年12月17日 10:21
  • 1893

一段调用advapi32.dll中MD5函数的BCB代码

#ifndef TOOL_BOX #define TOOL_BOX extern "C"{ /* Data structure for MD5 (Message-Digest) computatio...
  • akinosun
  • akinosun
  • 2012年03月07日 22:01
  • 649

字符串String MD5计算小工具 VC++篇 VS2008工程

基于字符串加密的MD5算法,VS2008 VC++,多字节编译工程。主要代码如下,实现了ANSI字符串加密与Unicode字符串加密。 void CEncryptByMd5Dlg::OnButto...
  • tcjy1000
  • tcjy1000
  • 2015年12月30日 20:15
  • 1088

MD5算法的识别

前言如果程序中用到了MD5算法, 又没有对抗, 用PEID.KryptoANALzer插件扫描算法时, 会指出MD5算法特征的位置. 扫描的是MD5Transform函数.记录扫描记录的格式: ...
  • LostSpeed
  • LostSpeed
  • 2017年03月07日 12:43
  • 331

Hive UDF实现函数MD5

Hive提供了User Defined Functions的开发接口以给使用者扩展。上手比较简单,下面是开发使用一个MD5的例子。 JAVA代码: package org.nalang.hive....
  • luanwpp
  • luanwpp
  • 2012年05月07日 20:27
  • 5233

MD5算法原理说明

来源---百度百科MD5 MD5算法实现: 输入:不定长度信息(要加密的信息) 输出:固定长度128-bits。由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 ...
  • hla199106
  • hla199106
  • 2015年04月19日 15:56
  • 8047

linux下调用openssl函数进行md5

可以在freebsd/macos/linux下编译运行。gcc -o test test.c -lcrypto----test.c---#include #include int main{     ...
  • mounter625
  • mounter625
  • 2010年11月25日 22:03
  • 2750

MD5在Java中的实现

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。2004年8月17日中国山东大学的王小云教授实现...
  • anerle2012
  • anerle2012
  • 2016年08月26日 14:40
  • 1180

hive自定义udf实现md5功能

Hive自定义UDF实现md5算法Hive发展至今,自身已经非常成熟了,但是为了灵活性,还是提供了各种各样的 插件的方式,只有你想不到的,没有做不到的,主流的开源框架都有类似的机制,包括Hadoop...
  • u010454030
  • u010454030
  • 2016年05月24日 16:35
  • 2419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调用AdvApi32.dll中MD5算法的函数。
举报原因:
原因补充:

(最多只允许输入30个字)