您的位置:首页 > 编程语言 > C语言/C++

visual studio c++ 2015 Crypto++ 下载、编译和部署

2017-05-18 08:46 1446 查看
Crypto++是一个开源的C++加密算法库,它包括密码、消息认证码,单向散列函数,公钥密码机制,关键协议方案,缩小压缩等加密算法。本文将介绍Crypto++库从下载到项目应用的基本步骤。(本人目前的项目需要的是AES文件加密算法,其他的留待以后探索)

一、下载

1,登陆官网:https://www.cryptopp.com/

2,点击“Download”,将显示如下的下载列表



    我选择的是“5.6.5 Release”。

二、编译

1,将下载的压缩文件解压后,找到“*.sln”文件。

    Crypto++是一个跨平台的库,支持“MSVC6.0 - VS2015”、“GCC3.2 - 7”等C++编译器。我主要用于Win7 X86平台,选择用VS2015进行编译。

2,直接用VS2015打开“*.sln”文件,它会提示“升级VC++编译器和库”,确认即可。

    升级完毕,在VS的解决方案资源管理器中,可以看到该solution下有四个工程,分别是:cryptdll、crypttest、cryptlib和dlltest。其中,crypttest需要依赖cryptlib,而dlltest则是对cryptdll的测试工程。

3,修改MSVC Runtime Library

    Crypto++库支持多线程,上述四个工程,默认的多线程运行时库都是静态版本的,即“MT”或“MTd”,我们需要将它们修改为“MD”或“MDd”。

    为什么要这么修改,可以参看我的另一篇博文:http://blog.csdn.NET/sagittarius_warrior/article/details/53405217

4)编译

    可以对每个工程进行单独编译,也可以对整个solution进行编译(选择菜单栏上的“build”)。我选择的是编译整个solution,因为单工程编译时,编译cryptdll是会报错,暂时没去查它是为什么。

    编译后,会生成一系列文件夹和文件,“Win32->Output->cryptlib.lib”,这个文件就是生成的库文件。事实上,这中方式仅仅只编译了cryptlib和crypttest。

三、部署

    从上面的编译可知,Crypto++库有两种发布方式:一种是DLL(动态链接库),一种是Lib(静态链接库)。我在此先尝试Lib方式,后面有时间再探索DLL方式。下面,我将以一个win32Console工程为例,讲解如何部署Crypto++库。

1,新建Win32 Console工程

    直接用VS2015新建一个名为“AES”的Win32 Console工程,默认即可。

2,拷贝头文件

    Lib方式发布Crypto++库需要在目标工程下包含Crypto++源码文件夹下所有的头文件。事实上,这些头文件还是挺多的,有145个。为了方便管理,我新建一个“Include”文件夹,并编写一个bat脚本来将这些头文件拷贝到“Include”文件夹内。bat源码如下:

[cpp] view
plain copy

 





echo start copy  

mkdir Include  

copy *.h Include  

echo end copy  

pause  

    将这个Include文件夹放到目标工程源码目录下,并设置它为包含目录。

3,拷贝lib文件

    在目标工程源码目录下,新建一个“Library”文件夹,将“cryptlib.lib”拷贝进去,并将该文件夹设为“链接器->附加依赖库目录”。

4,链接库文件

    在此,我选择用“#pragma comment(lib,"cryptlib.lib")”预编译指令将它链接进去。也可以在工程文件中显示设置链接库。

5,包含对应的头文件和应用命令空间。

[cpp] view
plain copy

 





#include "aes.h"  

#pragma comment(lib,"cryptlib.lib")  

using namespace CrytoPP;  

    关于头文件,你需要用到那个算法,你就包含哪个头文件。比如,我这里只用到AES,我就只包含AES的头文件。

四、测试demo

    参考链接:

    ECB模式:http://www.cnblogs.com/lit10050528/p/4081658.html

    CBC模式(C):http://www.mincoder.com/article/3994.shtml

    CBC模式(C++)https://my.oschina.Net/u/566591/blog/168421

    Multi-Modes :http://blog.poxiao.me/p/advanced-encryption-standard-and-block-cipher-mode/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Crypto++ visual stud