visual studio c++ 2015 Crypto++ 下載、編譯和部署
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
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原始碼如下:
- 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,包含對應的標頭檔案和應用命令空間。
- #include "aes.h"
- #pragma comment(lib,"cryptlib.lib")
- usingnamespace 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/