DEVC++生成DLL的方法

本文详细介绍了如何使用DEVC++创建一个MD5加密算法的DLL项目。首先,建立DLL项目并包含相关源码文件,如dll.h、dllmain.c、md5.c和md5.h。编译后生成DLL文件和库文件。接着,通过创建一个新的C语言控制台工程,并链接到生成的库文件来测试DLL,确保其正确工作。
摘要由CSDN通过智能技术生成

通过网上一个MD5加密算法源码生成DLL

一、建立DLL项目并编译

DEVC++创建C项目,选择DLL,

一共4个文件及源码如下:

dll.h

dllmain.c

md5.c

md5.h

函数参数:

char * getMD5 (unsigned char *s);

 

dll.h:

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


//DLLIMPORT void HelloWorld (void);
DLLIMPORT char * getMD5 (unsigned char *s);


#endif /* _DLL_H_ */

 

 

dllmain.c:

 

/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "md5.h" 

DLLIMPORT char * getMD5 (unsigned char *encrypt)
{


        int i; 
        char output[32+1];
        char temp[3];
        memset(output,0,33);

        unsigned char decrypt[16];     
        MD5_CTX md5; 
        MD5Init(&md5);               
        MD5Update(&md5,encrypt,strlen((char *)encrypt)); 
        MD5Final(&md5,decrypt);         
       // printf("加密前:%s\n加密后:",encrypt); 
        for(i=0;i<16;i++) 
        { 

              sprintf(temp,"%02x",decrypt[i]);

              strcat(output,temp);
        } 


return output;

 

}

 

 

BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{
    switch (reason)
    {
      case DLL_PROCESS_ATTACH:
        break;

      case DLL_PROCESS_DETACH:
        break;

      case DLL_THREAD_ATTACH:
        break;

      case DLL_THREAD_DETACH:
        break;
    }

    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}

 

 

 

 

md5.c:

 

#include <memory.h> 
#include "md5.h" 
  
unsigned char PADDING[]={
   0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 
                         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 
                         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 
                         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
                          
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值