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

Qt Code:
 1 #include <iostream>
 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

出現這個代表測試成功,部署完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM