MD5算法编成动态链接库
来源:互联网 发布:ubuntu crontab 日志 编辑:程序博客网 时间:2024/05/23 18:43
一、建立动态链接库:
(以下涉及到的md5.h文件,global.h文件和md5.cpp的详细内容请参考前一篇博文---MD5算法)
1.
2.
3.
#include "global.h"
#include "md5.h"
#ifndef LIB_H
#define LIB_H
extern "C" void __declspec(dllexport)Encode (unsigned char*output,UINT4 *input,unsigned int len);
extern "C" void __declspec(dllexport)MD5Init(MD5_CTX*);
extern "C" void __declspec(dllexport)MD5Update(MD5_CTX*context,unsigned char *input,unsigned int inputlen);
extern "C" void __declspec(dllexport)MD5Final(unsigned chardigest[16], MD5_CTX *context);
extern "C" void __declspec(dllexport)MD5Transform (UINT4state[4],unsigned char block[64]);
extern "C" void __declspec(dllexport)Decode (UINT4*output,unsigned char *input,unsigned int len);
extern "C" void __declspec(dllexport)MD5_memcpy (POINTERoutput,POINTER input,unsigned int len);
extern "C" void __declspec(dllexport)MD5_memset (POINTERoutput,int value,unsigned int len);
#endif
4.建立文件md5.cpp,其内容为原来内容,只不过把原来的#include "global.h"
#include "md5.h"去掉了,然后加上了#include "lib.h"
5.编译然后在工程的Debug目录下生成了MD5DLL.dll和MD5DLL.lib文件(这两个重要)
二、编写测试的main函数
建立工程之前,先要把以上生成的MD5DLL.dll和MD5DLL.lib文件考到本工程目录下,现在开始编写main函数吧,now ,let'sbegin!!
#include<stdio.h>
#include<windows.h>
typedef unsigned char*POINTER;
typedef unsigned short intUINT2;
typedef unsigned long intUINT4;
typedef struct
{
} MD5_CTX;
typedef void(*pMD5Init)(MD5_CTX *context);
typedef void(*pMD5Update)(MD5_CTX *context,unsigned char *input,unsigned intinputlen);
typedef void(*pMD5Final)(unsigned char digest[16], MD5_CTX*context);
int main(int argc, char*argv[])
{
}
编译后,就可看到动态链接库的使用成功,其结果与MD5算法中在md5.c中写main函数的效果一样。
三、另外一种调用方法:
#include <stdio.h>
#include <windows.h>
typedef unsigned char *POINTER;
typedef unsigned short int UINT2;
typedef unsigned long int UINT4;
typedef struct
{
UINT4 state[4];
UINT4 count[2];
unsigned char buffer[64];
} MD5_CTX;
extern "C" __declspec(dllimport) MD5Init(MD5_CTX *context);
extern "C" __declspec(dllimport) MD5Update(MD5_CTX*context,unsigned char *input,unsigned int inputlen);
extern "C" __declspec(dllimport) MD5Final(unsigned chardigest[16], MD5_CTX *context);
int main(int argc, char* argv[])
{
int i;
unsigned char encrypt[200];
unsigned char decrypt[17];
MD5_CTX md5;
MD5Init(&md5);
printf("请输入一个字符串:");
scanf("%s",encrypt);
MD5Update(&md5,encrypt,strlen((char*)encrypt));
MD5Final(decrypt,&md5);
printf("得到的MD5码是:");
for(i=0;i<16;i++)
printf("%2x",decrypt[i]);
printf("n");
return 0;
}
- MD5算法编成动态链接库
- 将c++代码编成动态库在android中使用
- 最近写的一个makefile,可以配置编成elf,静态库,动态库
- 静态的dtree改编成动态dtree
- VC++动态链接库编程之DLL算法
- 动态链接库、静态链接库;动态链接、静态链接
- 动态链接,静态链接,动态链接库,静态链接库
- 应用程序链接动态链接库
- cmake 链接动态链接库
- 动态链接和动态链接库
- 动态链接库-原理
- 动态链接库-实现
- 创建动态链接库
- 动态链接库
- 动态链接库
- 动态链接库
- 动态链接库
- 动态链接库
- 信息安全_分组加密算法_DES算法_加…
- HTML初体验——实现在不同页面下对背景音乐的控制
- 信息安全_RSA算法加密_Java
- pthread_rwlock_t基本用法
- 4步win7下简单FTP服务器搭建…
- MD5算法编成动态链接库
- MD5算法
- 信息安全MD5_实验报告与源码
- web JSP表单提交和接收简单实现
- webAJAX实验源码及报告
- web技术_css+div完成网页设计
- 程序员常去的网站【转】
- C语言_链表_结构体_电话簿简单实现
- windows环境下编译运行C语言程序(…