您的位置:首页 > 其它

Crypto++在Visual Studio 2008下的使用方式

2009-01-19 08:59 363 查看


最近在帮学长测试Crypto++在Visual Studio下的使用方式,在这边记录一下步骤跟过程。

我是使用Visual Studio 2008进行编译跟安装,但是相同步骤经学长测试过,在VS 2005下应该也行得通。 只是整个compile建置过程不要不同版本Visual Studio混用就可以了(因为之前卡关了一下就是因为这个原因……)

整个过程分成两个主要部份,第一部份为compile Crypto++为crypto.lib档 ;第二部份为使用crypto.lib真正来进行加解密的功能。

crypto.lib compile过程如下︰

Crypto++ 官網下載最新版的Crypto++,我抓的版本是5.5.2 版。到Crypto++官网下载最新版的Crypto++,我抓的版本是5.5.2版。

开启cryptest.sln档(本档是VS 2005 soluction档,VS 2008需要多做一步soluciton转换的动作)

开启此soluction后,会发现里面有四个子专案︰cryptdll、cryptest、cryptlib、dlltest,在cryptlib专案上按滑鼠右键-> Build

等待此project building结束后,在原本Crypto++解压缩的目录下/ Win32/Output/Debug目录下,会发现有个cryptlib.lib档 ,这样就成功了。

cryptlib.lib使用过程如下︰

使用VS 2008建立新专案,专案类型请选择Win32 Console Application

Application Settings页面中,在" Additional options "中,请勾选" Precompiled header ",再按下Finish按钮结束设定。

在专案的目录下,建立include目录,把Crypto++ source code中的header file (.h)全部copy到此目录下。

在专案的目录下,建立lib目录,把上一步骤中所产生的cryptlib.lib档copy到此目录下。

新增test.cpp档,档案内容我放在后面。

打开Soluction Explorer window,在我们所建的专案上,按滑鼠右键-> Properties ,设定专案属性。

C/C++ -> Additional Include Directories设定,加入我们刚刚所建立的include目录路径。

C/C++ -> Code Generation -> Runtime Library设定,请确定目前模式是在/MT或是/MTd

Linker -> Additional Libraries Directories设定,加入我们刚刚所建立的lib目录路径。

Linker -> Command Line设定,加入一行cryptlib.lib

按下F5建build此专案看看,如果可以build成功就大功告成了!

测试档案内容如下︰

// CryptoPP.cpp
#include "stdafx.h" "

#include <dsa.h>
using CryptoPP::DSA;
using CryptoPP::DSA_DER;
using CryptoPP::DSA_P1363;

#include <pubkey.h>
using CryptoPP::PrivateKey;;
using CryptoPP::PublicKey;

#include <osrng.h>
using CryptoPP::AutoSeededRandomPool;

#include <files.h>
using CryptoPP::FileSource;
using CryptoPP::FileSink;
using CryptoPP::StringSource;
using CryptoPP::StringSink;

int main(int argc, char* argv[]) int main(int argc, char* argv[])
{
AutoSeededRandomPool prng;

// Crypto++ Key Generation
DSA::Signer signer;
PrivateKey& privateKey = signer.AccessPrivateKey();
privateKey.GenerateRandom( prng );

DSA::Verifier verifier( signer );
PublicKey& publicKey = verifier.AccessPublicKey();

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: