Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4247732
  • 博文数量: 447
  • 博客积分: 1241
  • 博客等级: 中尉
  • 技术积分: 5786
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-27 06:48
个人简介

读好书,交益友

文章分类

全部博文(447)

文章存档

2024年(1)

2023年(5)

2022年(29)

2021年(49)

2020年(16)

2019年(15)

2018年(23)

2017年(67)

2016年(42)

2015年(51)

2014年(57)

2013年(52)

2012年(35)

2011年(5)

分类: 网络与安全

2012-10-15 19:26:47

最近一直遇到openssl的问题,以前用的版本是0.9.7
发现使用最新的1.0.0.d居然不支持rc5的算法。
看了一下changlog
Change ./Configure so that certain algorithms can be disabled by default.
The new counterpiece to "no-xxx" is "enable-xxx".

The patented RC5 and MDC2 algorithms will now be disabled unless
"enable-rc5" and "enable-mdc2", respectively, are specified.

(IDEA remains enabled despite being patented. This is because IDEA
is frequently required for interoperability, and there is no license
fee for non-commercial use. As before, "no-idea" can be used to
avoid this algorithm.)
默认不支持rc5,需要重新编译

编译的时候
perl Configure enable-rc5  enable-mdc2 enable-md2 VC-WIN32
然后
ms\do_ms
最后
nmake -f ms\ntdll.mak

编译完毕后,发现openssl命令下
输入help还是没有任何rc5的算法,郁闷了好一阵子,觉得编译的不对劲,编译的速度快了不少。
原来没有删除tmp32下的obj文件。
删除tmp32的obj文件后,重新编译。
运行openssl,输入help
出现
Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
aes-256-cbc       aes-256-ecb       base64            bf
bf-cbc            bf-cfb            bf-ecb            bf-ofb
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb
des               des-cbc           des-cfb           des-ecb
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb
des-ofb           des3              desx              idea
idea-cbc          idea-cfb          idea-ecb          idea-ofb
rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc
rc2-cfb           rc2-ecb           rc2-ofb           rc4
rc4-40            rc5               rc5-cbc           rc5-cfb
rc5-ecb           rc5-ofb           seed              seed-cbc
seed-cfb          seed-ecb          seed-ofb

终于ok了。以后多看文档啊

openssl全部的编译指令

Ciphers:

no-idea       -DOPENSSL_NO_IDEA
no-aes        -DOPENSSL_NO_AES
no-camellia   -DOPENSSL_NO_CAMELLIA
no-seed       -DOPENSSL_NO_SEED
no-bf         -DOPENSSL_NO_BF
no-cast       -DOPENSSL_NO_CAST
no-des        -DOPENSSL_NO_DES
no-rc2        -DOPENSSL_NO_RC2
no-rc4        -DOPENSSL_NO_RC4
no-rc5        -DOPENSSL_NO_RC5

no-md2        -DOPENSSL_NO_MD2
no-md4        -DOPENSSL_NO_MD4
no-md5        -DOPENSSL_NO_MD5
no-sha        -DOPENSSL_NO_SHA
no-ripemd     -DOPENSSL_NO_RIPEMD
no-mdc2       -DOPENSSL_NO_MDC2

no-rsa        -DOPENSSL_NO_RSA
no-dsa        -DOPENSSL_NO_DSA
no-dh         -DOPENSSL_NO_DH

no-ec         -DOPENSSL_NO_EC
no-ecdsa      -DOPENSSL_NO_ECDSA
no-ecdh       -DOPENSSL_NO_ECDH

Non-cipher functionality:

no-sock       -DOPENSSL_NO_SOCK         No socket code.
no-ssl2       -DOPENSSL_NO_SSL2         No SSLv2.
no-ssl3       -DOPENSSL_NO_SSL3         No SSLv3.
no-err        -DOPENSSL_NO_ERR          No error strings.
no-krb5       -DOPENSSL_NO_KRB5         No Kerberos v5.
no-engine     -DOPENSSL_NO_ENGINE       No dynamic engines.
no-hw         -DOPENSSL_NO_HW           No support for external hardware.

Not documented:

no-tl***t     -DOPENSSL_NO_TL***T
no-cms        -DOPENSSL_NO_CMS
no-jpake      -DOPENSSL_NO_JPAKE
no-capieng    -DOPENSSL_NO_CAPIENG

编译只带MD5和SHA的加密库

./config no-idea no-aes no-camellia no-seed no-bf no-cast no-des no-rc2 no-rc4 no-rc5 \
no-md2 no-md4 no-ripemd no-mdc2 no-rsa no-dsa no-dh no-ec no-ecdsa no-ecdh no-sock \
no-ssl2 no-ssl3 no-err no-krb5 no-engine no-hw
make depend
make build_crypto

我以前的blog


下载openssl的安装包并解压
下载地址:
下载安装ActivePerl:一路next就行了
安装openssl步骤:
cmd下输入perl configure VC-WIN32
接着输入ms\do_ms
Microsoft Visual Studio\VC98\bin目录下执行 vcvars32.bat
转到openssl目录下,输入:nmake -f ms\ntdll.mak
如果编译成功,最后的输出都在out32dll目录下:包括可执行文件、两个dll和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib
打开VC-Tools-Options-Directores,在Include files中增加openssl\include目录,将libeay32.lib和ssleay32.lib 复制到工程当前目录中
在要编译的源程序中包含以下三个头文件并加入LIB:
#include
#include
#include
#pragma comment(lib, "libeay32.lib")

#pragma comment(lib, "ssleay32.lib")
编译多个版本的openssl
cd 到openssl 目录

把 ms 目录下的 ntdll.mak 和 nt.mak 中 CFLAGS 中的 MD 改成 MTD(Debug版本) 或 MT(Rlease版本),如下所示
dll: CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo
dll debug: CFLAG= /MDd /ZI /Od /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo
static: CFLAG= /MT /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo
static debug: CFLAG= /MTd /ZI /Od /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo

 

nmake -f ms\ntdll.mak 动态库
nmake -f ms\nt.mak 静态库

nmake -f ms\ntdll.mak test 测试动态库
nmake -f ms\nt.mak test 测试静态库

nmake -f ms\ntdll.mak install 安装动态库
nmake -f ms\nt.mak install 安装静态库

nmake -f ms\ntdll.mak clean 清理
nmake -f ms\nt.mak clean 清理

附录:在VC中对C/C++ 运行时库不同版本编译指令说明
        C Runtime Library:
        /MD        MSVCRT.LIB     多线程DLL的Release版本
        /MDd       MSVCRTD.LIB    多线程DLL的Debug版本
        /MT        LIBCMT.LIB     多线程静态链接的Release版本
        /MTd       LIBCMTD.LIB    多线程静态链接的Debug版本
        /clr       MSVCMRT.LIB    托管代码和非托管代码混合
        /clr:pure  MSVCURT.LIB    纯托管代码

 

阅读(5899) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~