我是使用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;
}