您的位置:首页 > 运维架构 > Linux

Botan在windows和linux平台下的编译

2013-11-20 11:40 369 查看
由于项目中的需要,需要引用Botan的库,找了一个别人编译好的发现,debug下运行缺少MSVCP90.dll, release下运行正常。

于是自己编译Botan库。

上网down最近的稳定版本的源码,

安装python

将安装位置加入到系统环境变量中(path)
打开vs2008命令行编译工具

开始-vs2008-vs2008tools-命令行提示符

python configure.py --help

从帮助文档上面可以看出需要指定cc,
另外之前debug不能运行是由于需要指定enable-debug选项

于是

python configure.py --cc=msvc --enable-debug

nmake

nmake check

nmake install 

装好之后在c:\botan

over!

顺便记录一下在fedora12下交叉编译的命令
目标平台是arm,编译器是arm-none-linux-gnueabi-g++
python configure.py --cpu=arm --cc=arm-none-linux-gnueabi-g++ --prefix=../armbuild

make 

make install

over!

使用的是AES加密功能,做了两个函数来调用。

[align=left]Pipe * g_pipe = NULL;[/align]
[align=left] [/align]
[align=left]int InitializeAESEncyption ( char* password , int opt)[/align]
[align=left]{[/align]
[align=left]         std ::string key_str( password );[/align]
[align=left]         HashFunction * hash = get_hash( "MD5" );[/align]
         SymmetricKey key = hash-> process (key_str );
[align=left]         SecureVector <byte > raw_iv = hash ->process ( '0'+ key_str );[/align]
         InitializationVector iv ( raw_iv,
16);
[align=left]         if (opt == AES_ENCYPTION)[/align]
[align=left]        {[/align]
[align=left]                 g_pipe = new Pipe( get_cipher ("AES-128/CBC" , key, iv , ENCRYPTION ));[/align]
[align=left]        } else[/align]
[align=left]        {[/align]
[align=left]                 g_pipe = new Pipe( get_cipher ("AES-128/CBC" , key, iv , DECRYPTION ));[/align]
[align=left]        }[/align]
[align=left]         if (g_pipe == NULL)[/align]
[align=left]        {[/align]
[align=left]                 return -1;[/align]
[align=left]        }[/align]
[align=left]         return 0;[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]void AESEncyption ( char* msgInput , char * output)[/align]
[align=left]{[/align]
[align=left]         std ::string inputStr( msgInput );[/align]
[align=left]         g_pipe ->process_msg ( inputStr);[/align]
[align=left]         std ::string outputStr = g_pipe ->read_all_as_string ();[/align]
         strcpy (output , outputStr. c_str ());
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息