[置顶] openssl 编译、RSA公私钥导出

时间:2021-10-08 13:10:24

OpensslRSA使用

一、概述

    下面将分别介绍openssl VS2008的编译,及RSA的使用。

二、编译

安装方法:http://blog.csdn.net/flywithmj/article/details/7477662 (转)

首先下载ActivePerl,下载最新版本(现在是最新),文件名为ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi。安装。

下载OpenSSL,我用最新版本1.0.1编译没成功,所以我就用了大家都推荐的版本0.9.8r。解压到C盘根目录下。

接下来是下载Microsoft Visual C++ 2008 Redistributable,该软件有些人需要安装。

在命令窗口中(cmd进入),输入:CD C:\OpenSSl-0.9.8r,进入OpenSSL-0.9.8r目录,让后输入:perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0,回车。此处添加“-DOPENSSL_USE_IPV6=0”是用来禁用IPV6,防止报ml.exe的“0x01”错误。着这里,没必要输入“--prefix=c:/openssl”,因为现在已经在该目录下,很多文章不论三七二十一,都把这句加上,导致很多不必要的错误。

接着输入ms\do_ms,生成makefile文件。

接着输入CD C:\Program Files\Microsoft Visual Studio 9.0\VC\bin,回车。输入vcvars32.bat,回车运行。此处为注册环境变量,其他地方肯定这点也说了。

接下来就是输入:CD C:\OpenSSl-0.9.8r,再次进入OpenSSL-0.9.8r目录,输入:nmake -f ms\ntdll.mak,编译动态库。编译要花几分钟的时间,请耐心等待。如果出现找不到ml.exe(VS2008一般不会),就去下载masm,安装这个软件,在bin里面找到ml.exeml.err,复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin下面。

编译完成后,输入nmake -f ms\ntdll.mak test,进行测试,若测试成功,最后输出“pass all tests”,则编译成功。

输入nmake -f ms\ntdll.mak install,安装。

C:\OpenSSl-0.9.8r目录下,生成三个文件夹:bin,include,lib

bin目录:openssl.exe,libeay32.dll,ssleay32.dll

include目录:有个openssl目录,里面有好多头文件

lib目录:libeay32.lib,ssleay32.lib

includelib加入到VS2008环境中

三、RSA

为什么我要openssl,我原先用网上一份代码来生成RSA密钥组,当是效率非常低,生成2048bits要一分钟之久,后面找了各种方法。有crytpo++,但是这个在导出N,D,E时会有问题,他只能导出公私钥,倒不出N,D,E,有可能我使用方法不对。下面给出opensslRSAN,D,E的导出,测试正常

RSA *key;  

key = RSA_generate_key(2048,65537,NULL,NULL);


BIGNUM *bne,*bnn,*bnd;

//构建RSA数据结构

bne = BN_new();

bnd = BN_new();

bnn = BN_new();


bne = key->e;

bnd = key->d;

bnn = key->n;

char *pn,*pe,*pd;

char n[2048],d[2048],e[2048];

memset(n,0,2048);

memset(d,0,2048);

memset(e,0,2048);


pn = BN_bn2hex(bnn);

pd = BN_bn2hex(bnd);

pe = BN_bn2hex(bne);

memcpy(n,pn,strlen(pn));

memcpy(e,pe,strlen(pe));

memcpy(d,pd,strlen(pd));