windows32 openssl-0.9.8a安装步骤

来源:互联网 发布:工程咨询资质取消知乎 编辑:程序博客网 时间:2024/06/07 03:44
windows32 openssl安装步骤
只能安装32原因
vs环境是32位的,ide一般默认只是32位的,且32位的稳定
1.Windows server2012下安装的方法
安装环境:Windows server 2012+VS2015
工具:ActivePerl下载地址:http://www.activestate.com/
nasm-2.13.01-installer-x86
      openssl-0.9.8a.tar,下载地址:http://www.openssl.org/
1、安装perl
1.1安装Perl(我安装在C盘,同时我的openssl也解压在C盘)
    使用命令行工具,进入C:\Perl64\eg路径下, 执行“perl example.pl”,若显示“Hello from ActivePerl!”,则说明Perl安装成功。

1.2、设置环境变量
    打开我的电脑->属性->高级系统设置->环境变量,找到Path系统变量,点击编辑,添加E:\VS 2013\VC\bin;C:\Perl64\bin;c:\windows\system32,其中E:\VS 2013\VC\bin是我的VS2013的安装路径,根据情况自己修改。C:\Perl64\bin是Perl的安装路径,根据情况自己修改。

 2.安装vs
安装VS2015

3.配置openssl
3.1、用管理员身份打开Visual Studio的开发人员命令提示,进入vc\bin目录下,执行vcvar


3.2进入到openssl目录下,configure VC-win32
执行Configure命令(配置编译参数),请查阅openssl安装文件,32位查看install32
 
 
3.3、运行 ms\do_nasm

 由于下载版本名为nasm,编译文件不识别,所以将nasm安装文件全部复制到C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin中,并将nasm改名为masmw

3.4、运行nmake -f ms\ntdll.mak命令进行编译生成OpenSSL动态库


直接运行nmake -f ms\ntdll.mak命令时,会出现下面错误,警告被视为错误,导致退出
 所以需要改变mak文件,删除/wx 如下所示,保存(mak文件中描述了编译规则,现有规则将警告视为错误,所以删除wx,保证程序忽略警告,执行至结束,vs编译器亦是同理,可以将工程vc+中修改)


重新执行上述命令,此时会编译大概两分钟左右,耐心等待。


3.5、测试
    使用命令nmake -f ms\ntdll.mak test,若成功,会出现结果:

文件生成在out32dll下
 

4.测试例子
4.1新建工程vc++空,点击项目属性
添加环境Include files下添加OpenSSL安装目录下的include(包含目录)目录;在Library files(库目录)下添加out32dll目录
4.2 以上不知道好不好用,或者可以省略上一步,直接将生成的libeay32.lib libeay32.dll和ssleay32.dll ssleay32.lib拷贝到解释器的路径中如bin目录下
4.3 编辑程序,测试
代码源码
#include <openssl/aes.h>
#include <stdlib.h>
#include <string.h>
int main()
{
unsigned char key[16+1] = "my-key-i-choosed"; // 128bits key (应该是真正的随机数才好)
char pt1[16+5+1] = "0123456789abcdef12345"; // 明文
char ct[16+5+1]; // 密文
char pt2[16+5+1]; // 解密后的明文
AES_KEY k;
unsigned char iv1[16+1] = {"1023456789abcdef"}; // 16+1,加密用
unsigned char iv2[16+1] = {"1023456789abcdef"}; // 16+1,解密用
{ // single blcok test
AES_set_encrypt_key(key, 16*8, &k);
AES_encrypt((unsigned char*)pt1, (unsigned char*)ct, &k);
AES_set_decrypt_key(key, 16*8, &k);
AES_decrypt((unsigned char*)ct, (unsigned char*)pt2, &k);
if (memcmp(pt1, pt2, 16)==0)
puts("AES block ok");
else
puts("AES block err");
}
{ // cfb mode (stream mode)
int num=0;
AES_set_encrypt_key(key, 16*8, &k);
AES_cfb128_encrypt((unsigned char*)pt1, (unsigned char*)ct,
16+5, &k, (unsigned char*)iv1, &num, AES_ENCRYPT);
num=0;
AES_set_encrypt_key(key, 16*8, &k); // MUST as enc
AES_cfb128_encrypt((unsigned char*)ct, (unsigned char*)pt2,
16+5, &k, (unsigned char*)iv2, &num, AES_DECRYPT);
if (memcmp(pt1, pt2, 16+5)==0)
puts("AES CFB mode ok");
else
puts("AES CFB mode err");
}
system("pause");
return 0;
}
debug结果如下
5.可能遇到错误
5.1ml不是内部命令
添加ml64或ml32(根据机器型号选择)到bin目录下
(可能会缺少“ml.exe”,可下载masm并把其中的ml.exe拷贝至C:\Program Files\Microsoft Visual Studio\VC98\Bin下即可。)
5.2x86 与x64 冲突
由于openssl是64,而vs2015是32,所以冲突,所以改为都是32版本
5.3 安装32版本 提示缺少
使用nasm工具帮助安装
6、可能使用的命令
        测试OpenSSL动态库:nmake -f ms\ntdll.mak test
  测试OpenSSL静态库:nmake -f ms\nt.mak test
进入out32目录,执行..\ms\test
观看输出
  安装OpenSSL动态库:nmake -f ms\ntdll.mak install
  安装OpenSSL静态库:nmake -f ms\nt.mak install
  清除上次OpenSSL动态库的编译,以便重新编译:nmake -f ms\ntdll.mak clean
  清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms\nt.mak clean

7、总结(使用方法)
    当建立工程需要使用到openssl库时,在包含目录中添加openssl安装目录的include目录, 在库目录中添加out32dll目录。
或者将OpenSSL下的include文件夹、lib文件、dll文件拷出,使用的时候包含进去就行了。
10、参考博客
http://cuiqingcai.com/2266.html 这个好像方法更简单。
  http://blog.csdn.NET/zh516846937/article/details/40188065

原创粉丝点击