由于信息安全大赛要使用加密算法,查找相关文档之后决定使用openSSL。OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
编译openSSL的源码有三种方式,具体的情况源码根目录的Makefile中有说明;
(1)windows平台下使用Microsoft Visual C++编译器编译:
(2)windows平台下使用GNU MinGW和Cygwin编译:
(3)在Linux平台下使用gcc编译:
首先我们看一看openssl-1.0.1的源码,源码根目录的README文件(看软件包的README文件是个好习惯!)中有:
To install this package under a Unix derivative, read the INSTALL file. For
a Win32 platform, read the INSTALL.W32 file. For OpenVMS systems, read
INSTALL.VMS.
所以在windows平台下编译应该按照INSTALL.W32文件来做,在Linux平台下面按照INSTALL文件来做。
(1)windows平台下面使用cl编译器来编译:
如果你想使用Visual C++的汇编器来编译,那么是首先要有nasmw.exe或者nasm.exe。并且把他们放到PATH环境变量中。
首先生成配置文件,把平台配置为VC-WIN32:
> perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
--prefix指定openssl被安装的目录。
然后,用汇编器执行Makefile文件。
- If you are using NASM then run:
> ms\do_nasm
- If you don't want to use the assembly language files at all then run:
> perl Configure VC-WIN32 no-asm --prefix=c:/some/openssl/dir
> ms\do_ms
然后在VC的控制台中运行:
> nmake -f ms\ntdll.mak
如果一切正常,你会获得一些dll文件和exe文件,他们存放在out32dll文件夹中。
如果你想要测试文件,那么:
> nmake -f ms\ntdll.mak test
要安装openssl的话,使用:
> nmake -f ms\ntdll.mak install
在使用VC编译之后生成的是在out32dll里面的libeay32.lib以及ssleay32.lib这两个静态库,以及libeay23.dll和ssleay23.dll两个动态库。
在使用Cygwin给MinGW编译生成的是根目录下面的libcrypto.a和libssl.a这两个静态库。
(2)Windows 平台下使用GNU MinGW和Cygwin来编译