Qt 5.8.3 部署/添加 Crypto++第三方库(5.6.5版本)
首先,Qt没有封装加解密算法库(其实有个哈希函数的函数)。介于OpenSSL函数封装不友好,以及先前爆发的心脏滴血漏洞广受诟病,我们考虑在C++上使用一种新的,并且封装友好的,OOAD程度更高的加解密算法库Crypto++。
笔者此篇文章发布前官方已更新到5.6.5版本。官网:https://www.cryptopp.com.API参考文档网址:https://www.cryptopp.com/docs/ref/
从官网下载好后,解压,由于自带了VC的项目文件,所以使用Visual Stdio部署比较容易,网上教程也很多。这里我们介绍在Qt上的部署问题。主要问题在于使用mingw编译该源码。在linux上也能很好的解决问题。
1.下载cryptopp565.zip。笔者已经成功通过mingw编译。
解压cryptopp565.zip to D:\cryptopp(或者D:\cryptopp565)
2.接下来很重要!!!使用记事本或者其他文本编辑器编辑D:\cryptopp\fipstest.cpp文件,将其中的每一个‘OutputDebugString’都替换为 'OutputDebugStringA'(一共三个地方替换)。记得要保存!记得要保存!记得要保存!
3.删除D:\cryptopp\GNUmakefile文件(不然之后的编译会报错)
4.打开Windows控制台,这里切换目录到crypto++库目录,输入如下命令即可
D:
cd \cryptopp
qmake -project
此时该目录下会产生cryptopp.pro文件。绝对路径为D:\cryptopp\cryptopp.pro
5.这里我们使用QtCreator打开cryptopp.pro。也可使用文本编辑器直接打开。
将第一行的
TEMPLATE = app 修改为 TEMPLATE = lib
并且在最后添加一行:LIBS += -lws2_32
6.在控制台中输入下列命令进行编译
qmake
mingw32-make all
7.等待编译结束 (通常需要几分钟)4-6步命令的截图如下图:
8.之后编译完成后,我们需要拷贝生成的两个文件
1)D:\cryptopp\release\libcryptopp552.a 拷贝到 <Qt dir>\lib
2)D:\cryptopp552\release\cryptopp552.dll拷贝到<Qt dir>\bin
这里<Qt dir>代表你自己的Qt安装目录
9.在<Qt dir>\include下创建一个名字为cryptopp的文件夹
从D:\cryptopp拷贝所有头文件header (.h)到 <Qt dir>\include\cryptopp.
10.现在我们在Qt工程里测试下crypto++库
计算md5哈希值:
main.cpp
#include <iostream> #define CRYPTOPP_DEFAULT_NO_DLL
#include <cryptopp/dll.h>
#ifdef CRYPTOPP_WIN32_AVAILABLE
#include <windows.h>
#endif
#include <cryptopp/md5.h> USING_NAMESPACE(CryptoPP)
USING_NAMESPACE(std)
const int MAX_PHRASE_LENGTH=; int main(int argc, char *argv[]) { CryptoPP::MD5 hash;
byte digest[ CryptoPP::MD5::DIGESTSIZE ];
std::string message = "Hello World!"; hash.CalculateDigest( digest, (const byte*)message.c_str(), message.length()); CryptoPP::HexEncoder encoder;
std::string output;
encoder.Attach( new CryptoPP::StringSink( output ) );
encoder.Put( digest, sizeof(digest) );
encoder.MessageEnd(); std::cout << "Input string: " << message << std::endl;
std::cout << "MD5: " << output << std::endl; return ;
}
这一步很关键,否则会报错!! 在.pro文件里最后添加下列两行!
LIBS += -lcryptopp552
CONFIG+=console
接下来程序屏幕会显示:
Input string: Hello World!
MD5: ED076287532E86365E841E92BFC50D8C
出现这个代表测试成功,部署完成。
Qt 5.8.3 部署/添加 Crypto++第三方库(5.6.5版本)的更多相关文章
- qt .pro文件和cmakelists.txt配置第三方库
.pro文件引用第三方库文件和头文件路径 1.库文件(LIBS添加的是共享库文件,-L添加目录,-l指定共享库名称) LIBS += -L/usr/local/lib -lmath LIBS的使用就是 ...
- iOS——Xcode中添加第三方库
一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...
- 史上最详细 Python第三方库添加方法 and 错误解决方法
(1):如何添加python第三方库(方法一): File ->> Settings... ->> Project Interpreter (2):如何添加python第三方库 ...
- Pycharm在线/手动离线安装第三方库-以scapy为例(本地离线添加已经安装的第三方库通过添加Path实现)
在线安装运行Pycharm,打开需要添加scapy文件的项目,以TestScapy为例 点击工具栏的File选项,选中Settings,单击打开 ...
- 命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用
在学习廖老师的Python教程的时候,遇到命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用的情况, 这种情况可能是由于在本地安装了多个Python版本的缘故(只是可能的情况之一 ...
- python 第三方库的安装方法
一.看更大的python世界 python 全球计算生态的主站:python 社区 www.pypi.org 二.安装第三方库 1) pip 命令安装方法 1.1 安装第三方库 命令行输入pip in ...
- Maven添加第三方库及部署配置
配置其实很简单,还是修改~/.m2/settings.xml文件,具体用文件说话,其他不解释. <?xml version="1.0" encoding="UTF- ...
- Qt第三方库----QCustomPlot
一.软件下载 下载地址:http://www.qcustomplot.com/index.php/download 这里推荐下载第一个链接的内容: 注:这里的第三方库要放在非中文目录下. 二.配置 ( ...
- IOS 手动添加第三方库报错问题
当不想使用CocoaPods来管理和使用第三方库的时候,就需要手动添加和配置这些第三方库,难免会出现一些问题,主要问题汇总如下: 1.AFNetworking.NKNetWork.ZxingObjC等 ...
随机推荐
- Hadoop-mapreduce 程序在windows上执行需要注意的问题
1.在主程序中需要添加这几个参数配置 Configuration conf = new Configuration(); // 1.设置job运行时要访问的默认文件系统 conf.set(" ...
- CSS (二)解析CSS盒子
话说.一写博客还有些莫名的兴奋感-- 这几天一直挤时间忙于赶牛腩视频,迟到的CSS盒子.请谅解. CSS盒子,一開始听起来还有点高大上的赶脚. 后来了解之后,发现事实上非常easy理解.从功能上讲非常 ...
- 从编译器源代码中提取ARMv8的指令编码
2012年11月份的资料,之前ARMv8手冊还没公布,我想办法从编译器的binutils中提取出了全部ARMv8指令的二进制编码,之前不能随便发,如今相当于解禁了^_^. 问题1:提取ARMv8的指令 ...
- 双层for 循环
说说 图片 集合 list(set([ii for i in img_url_l for ii in i[0].replace('[','').replace(']','').replace(&quo ...
- yispider 开源小说採集器 (来源http://git.oschina.net/yispider/yispider 我的改动版由于他的我无法跑)
我的git地址 http://git.oschina.net/yangdc/yispider 小说採集器 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...
- [Codeforces 140C] New Year Snowmen
[题目链接] https://codeforces.com/problemset/problem/140/C [算法] 显然 , 我们每次应优先考虑数量多的雪球 将雪球个数加入堆中 , 每次取出数量前 ...
- EasyUI Calendar 日历
转自:http://www.jeasyui.net/plugins/175.html 通过 $.fn.calendar.defaults 重写默认的 defaults. 日历(calendar)显示允 ...
- java运行jdk连接mysql出现了:Establishing SSL connection without server's identity verification is not recommended
注意:出现这类提示也不会影响对数据库的增删改查操作,所以不用紧张.. 在运行练习时出现下面的错误信息提示: Establishing SSL connection without server's i ...
- bzoj 1029: [JSOI2007]建筑抢修【贪心+堆】
第一想法是按照结束时间贪心,但是这样有反例 所以先按照t贪心,能选则选,把选的楼的持续时间放进大根堆里,当当前的楼不能选的时候如果当前的持续时间比大根堆里最大的要小,就用这个替换最大,这样总数不变但是 ...
- wamp集成环境下帝国备份出错
我在本地wamp环境下面使用帝国备份王时,报错信息如下: Parse error: syntaxerror, unexpected $end in D:wampwwwhuifuclassfunctio ...