0%

添加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 拷贝到 \lib
  2)D:\cryptopp552\release\cryptopp552.dll拷贝到\bin
这里代表你自己的Qt安装目录

9.在\include下创建一个名字为cryptopp的文件夹
从D:\cryptopp拷贝所有头文件header (.h)到 \include\cryptopp.

10.现在我们在Qt工程里测试下crypto++库

计算md5哈希值:

main.cpp

复制代码

1 #include
2
3 #define CRYPTOPP_DEFAULT_NO_DLL
4 #include <cryptopp/dll.h>
5 #ifdef CRYPTOPP_WIN32_AVAILABLE
6 #include <windows.h>
7 #endif
8 #include <cryptopp/md5.h>
9
10 USING_NAMESPACE(CryptoPP) 11 USING_NAMESPACE(std) 12 const int MAX_PHRASE_LENGTH=250; 13
14 int main(int argc, char *argv[]) { 15
16 CryptoPP::MD5 hash; 17 byte digest[ CryptoPP::MD5::DIGESTSIZE ]; 18 std::string message = “Hello World!”; 19
20 hash.CalculateDigest( digest, (const byte*)message.c_str(), message.length()); 21
22 CryptoPP::HexEncoder encoder; 23 std::string output; 24 encoder.Attach( new CryptoPP::StringSink( output ) ); 25 encoder.Put( digest, sizeof(digest) ); 26 encoder.MessageEnd(); 27
28 std::cout << “Input string: “ << message << std::endl; 29 std::cout << “MD5: “ << output << std::endl; 30
31 return 0; 32 }

复制代码

 

这一步很关键,否则会报错!! 在.pro文件里最后添加下列两行!
LIBS += -lcryptopp552
CONFIG+=console

接下来程序屏幕会显示:
Input string: Hello World!
MD5: ED076287532E86365E841E92BFC50D8C

出现这个代表测试成功,部署完成。