VS中使用openssl/aes加密解密

实验目的:

1.熟悉openssl安装和API使用

2.理解aes加密算法原理

试验环境:

Visual Studio 2010

openssl-0.9.8zg

实验内容及过程:

1.配置openssl

1)官网http://www.openssl.org/source/下载openssl,并解压。

2下载perl并安装ActivePerl。在Windows下编译OpenSSL需要使用Perl脚本调用Configure产生MakeFile文件。在http://www.activestate.com/activeperl下下载针对Windows的版本。

3)运行“cmd”命令,在控制台窗口,使用“cd”命令改变当前目录为openssl-1.0.1e源码所在目录。

4)执行Configure。运行“perl Configure VC-WIN32 --prefix=c:/openssl-1.0.1e”。prefix参数的意义是OpenSSL编译好后的安装路径(64openssl使用:perl Configure VC-WIN64A)。

5)运行ms\do_ms

6 运行nmake -f ms\ntdll.mak。执行make进行编译。

7)运行nmake -f ms\ntdll.mak install,将安装编译后的OpenSSL复制到指定目录。会看到有三个文件夹:binincludelib

8)在VS中配置openssl路径。

2.VS下编程

AES_KEYaeskey;//定义密匙

设置加密密匙函数:

intAES_set_encrypt_key(const unsigned char *userKey, const int bits,AES_KEY *key);

设置解密密匙函数:

intAES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY*key);

加密函数:

voidAES_encrypt(const unsigned char *in, unsigned char *out,const AES_KEY *key);

解密函数:

voidAES_decrypt(const unsigned char *in, unsigned char *out,const AES_KEY *key);

代码:

#include 
#include 
#include 
#include 
#include 
using namespace std;
#include 
#pragma comment(lib,"libeay32.lib")

char enString[10000];//加密后
char deString[10000];//解密后

//加密函数
void enAes(char inString[], int inLen, char passwd[], int pwdLen,char add[])
{
	int i,j, len, nLoop, nRes;

	FILE * f2=fopen(add,"wb");//写入加密文件
	cout <<"加密结果:"<0){
		memset(buf,0,16);
		for(j=0;j0){
		memset(buf,0,16);
		for(j=0;j<16;j++) buf[j]=inString[i*16+j];
		AES_decrypt(buf,buf2,&aeskey);
		for(j=0;j<16;j++) {
			deString[i*16+j]=buf2[j];
			}
	}
	deString[i*16+nRes]=0;
	fprintf(f22,"%s",deString);
	fclose(f22);
	cout << "解密结果:"<



你可能感兴趣的:(openssl,api,aes,visual,studio,2010)