openssl编程

下载openssl编译好后得到lib,dll,源文件等;

添加opensll入构建路径:工具->选项->目录:include file和library file路径

在vc添加 libeay32.lib:工程->设置->连接:添加libeay32.lib

然后编译运行:

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <openssl/evp.h>

int my_md5(char* data,char* result){

	unsigned char md_value[EVP_MAX_MD_SIZE];
	unsigned int i,md_len;
	EVP_MD_CTX mdctx;
	EVP_MD_CTX_init(&mdctx);
	EVP_DigestInit_ex(&mdctx,EVP_md5(),NULL);
	EVP_DigestUpdate(&mdctx,data,strlen(data));
	EVP_DigestFinal_ex(&mdctx,md_value,&md_len);
	EVP_MD_CTX_cleanup(&mdctx);
	char temp[EVP_MAX_MD_SIZE];
	for(i=0;i<md_len;i++){
	
		sprintf(temp,"%02x",md_value[i]);
		strcat(result,temp);		
	}
	return md_len;
}
//md5.exe  "明文"  -count 5 
int main(int argc,char *argv[]){
	int count=1;
	if(argc<2){
		
		printf("Usage:md5.exe <-data> <-count argv>\n");
		return 0;
	}else if(argc==2){
		count=1;
		
	}else if(argc==3){
		if(strcmp("-count",argv[2])){
			
			printf("Usage:md5.exe 'data' <-count argv>\n");
			return 0;
		}
		count=1;
	}else if(argc==4){		
		count=atoi(argv[3]);
	}
	char *data=argv[1];

	for(int start=0;start<count;start++){

		char* result=(char* )malloc(1024);//要分配内存
		unsigned int md_len=0;			
		md_len=my_md5(data,result);
		int len=strlen(result);
		md_len=md_len*2;
		char val[EVP_MAX_MD_SIZE];
		memset(val,NULL,sizeof(EVP_MAX_MD_SIZE));
		for(int j=len-md_len,i=0;j<=len;j++,i++){
			
			val[i]=result[j];		
		}
		strcpy(data,val);
	}
	printf("%s",data);
	return 0;
}

多次md5加密的时候有异常,谁处理好了,告诉我一下。。


附上 vs2010编译openssl方法:

1.下载 OpenSSL http://www.openssl.org/,并解压到d:\openssl-1.0.1e目录(也可自己指定路径和目录名称)

2.下载 from http://www.activestate.com/ActivePer,并安装,并在环境变量中添加path=d:\perl\bin(d:\perl为perl的安装路径)

3.建一个存放opensll库文件的目录,此处指定为d:\openssl_lib

4.打开2010控制台:开始-所有程序—Microsoft visual studio2010——Visual Studio Tools——Visual Studio 2010命令提示

5.进入opensll源代码目录路径

 cd  d:\openssl-1.0.1e

6.按顺序执行下列命令

 d:\openssl-1.0.1e> perl Configure VC-WIN32 no-asm --prefix=d:\openssl_lib (存放编译后的库文文件目录)

  d:\openssl-1.0.1e> ms\do_ms

  d:\openssl-1.0.1e> nmake -f ms\ntdll.mak (编译动态库)(约5分钟左右)

  d:\openssl-1.0.1e> nmake -f ms\nt.mak   (编译静态库)

7.装载openssl到指定的目录d:\opensll_lib中

 d:\openssl-1.0.1e> nmake -f ms\ntdll.mak install

 d:\openssl-1.0.1e> nmake -f ms\nt.mak install

完成编译

二.在vs2010中使用openssl

二、使用OpenSSL

 1.新建一个工程。

  2.设置目录参数

 右击工程名——属性——

1)配置属性——VC++目录——在include目录中新增"d:\openssl_lib\include"(存放编译后的库文件的目录中);

2)VC++目录——"Library files"选择中新增目录"d:\openssl_lib\lib"。

3)配置属性——链接器——输入——附加依赖项——libeay32.lib 和ssleay32.lib即可

参考文献:

1.openssl-1.0.1e/ms/install.W32

2.http://blog.csdn.net/xhydra/article/details/12517135

3.http://www.cppblog.com/everett/archive/2012/07/13/183072.html

http://blog.163.com/xiaoting_hu/blog/static/50464772201310415042524/

你可能感兴趣的:(openssl编程)