QT mingw 编译Crypto++ 5.6.4
1、下載Crypto++?v5.6.4,并解壓;
https://codeload.github.com/weidai11/cryptopp/zip/CRYPTOPP_5_6_4
2、新建文件?cryptopp564 ,把解壓后的文件全部復制進去,不要子文件夾路徑;
3、隨便復制一個其它項目的.pro到當前目錄下,粘貼后,將這個文件重命名為?CryptoPPLib.pro??編輯器打開,內容清空,粘貼以下內容;
CryptoPPLib.pro文件內容如下:
QT -= core guiTARGET = CryptoPPLibTEMPLATE = libDEFINES += CRYPTOPPLIB_LIBRARYSOURCES += \3way.cpp \adler32.cpp \algebra.cpp \algparam.cpp \arc4.cpp \asn.cpp \authenc.cpp \base32.cpp \base64.cpp \basecode.cpp \bfinit.cpp \blowfish.cpp \blumshub.cpp \camellia.cpp \cast.cpp \casts.cpp \cbcmac.cpp \ccm.cpp \channels.cpp \cmac.cpp \cpu.cpp \crc.cpp \cryptlib.cpp \default.cpp \des.cpp \dessp.cpp \dh.cpp \dh2.cpp \dll.cpp \dsa.cpp \eax.cpp \ec2n.cpp \eccrypto.cpp \ecp.cpp \elgamal.cpp \emsa2.cpp \eprecomp.cpp \esign.cpp \files.cpp \filters.cpp \fips140.cpp \gcm.cpp \gf2_32.cpp \gf2n.cpp \gf256.cpp \gfpcrypt.cpp \gost.cpp \gzip.cpp \hex.cpp \hmac.cpp \hrtimer.cpp \ida.cpp \idea.cpp \integer.cpp \iterhash.cpp \luc.cpp \mars.cpp \marss.cpp \md2.cpp \md4.cpp \md5.cpp \misc.cpp \modes.cpp \mqueue.cpp \mqv.cpp \nbtheory.cpp \network.cpp \oaep.cpp \osrng.cpp \panama.cpp \pch.cpp \pkcspad.cpp \polynomi.cpp \pssr.cpp \pubkey.cpp \queue.cpp \rabin.cpp \randpool.cpp \rc2.cpp \rc5.cpp \rc6.cpp \rdtables.cpp \rijndael.cpp \ripemd.cpp \rng.cpp \rsa.cpp \rw.cpp \safer.cpp \salsa.cpp \seal.cpp \seed.cpp \serpent.cpp \sha.cpp \sha3.cpp \shacal2.cpp \shark.cpp \sharkbox.cpp \simple.cpp \skipjack.cpp \socketft.cpp \sosemanuk.cpp \square.cpp \squaretb.cpp \strciphr.cpp \tea.cpp \tftables.cpp \tiger.cpp \tigertab.cpp \trdlocal.cpp \ttmac.cpp \twofish.cpp \vmac.cpp \wait.cpp \wake.cpp \whrlpool.cpp \winpipes.cpp \xtr.cpp \xtrcrypt.cpp \zdeflate.cpp \zinflate.cpp \zlib.cppHEADERS += \3way.h \adler32.h \aes.h \algebra.h \algparam.h \arc4.h \argnames.h \asn.h \authenc.h \base32.h \base64.h \basecode.h \ # bench \blake2.h \blowfish.h \blumshub.h \camellia.h \cast.h \cbcmac.h \ccm.h \chacha.h \channels.h \cmac.h \config.h \cpu.h \crc.h \cryptlib.h \default.h \des.h \dh.h \dh2.h \dll.h \dmac.h \dsa.h \eax.h \ec2n.h \eccrypto.h \ecp.h \elgamal.h \emsa2.h \eprecomp.h \esign.h \factory.h \fhmqv.h \files.h \filters.h \fips140.h \fltrimpl.h \gcm.h \gf2_32.h \gf2n.h \gf256.h \gfpcrypt.h \gost.h \gzip.h \hex.h \hkdf.h \hmac.h \hmqv.h \hrtimer.h \ida.h \idea.h \integer.h \iterhash.h \keccak.h \lubyrack.h \luc.h \mars.h \md2.h \md4.h \md5.h \mdc.h \mersenne.h \misc.h \modarith.h \modes.h \modexppc.h \mqueue.h \mqv.h \nbtheory.h \network.h \nr.h \oaep.h \oids.h \osrng.h \ossig.h \panama.h \pch.h \pkcspad.h \polynomi.h \pssr.h \pubkey.h \pwdbased.h \queue.h \rabin.h \randpool.h \rc2.h \rc5.h \rc6.h \rdrand.h \resource.h \rijndael.h \ripemd.h \rng.h \rsa.h \rw.h \safer.h \salsa.h \seal.h \secblock.h \seckey.h \seed.h \serpent.h \serpentp.h \sha.h \sha3.h \shacal2.h \shark.h \simple.h \skipjack.h \smartptr.h \socketft.h \sosemanuk.h \square.h \stdcpp.h \strciphr.h \tea.h \tiger.h \trap.h \trdlocal.h \trunhash.h \ttmac.h \twofish.h \ # validate.h \vmac.h \wait.h \wake.h \whrlpool.h \winpipes.h \words.h \xtr.h \xtrcrypt.h \zdeflate.h \zinflate.h \zlib.h \unix {target.path = /usr/libINSTALLS += target}# added manuallyLIBS += -lws2_32CONFIG += warn_off4、刪除當前目錄下?GNUmakefile?此文件;
5、編譯庫lib
?5. 1、?用QTCreator打開CryptoPPLib.pro;
5.?2、取消,shadow?build勾選;
5.3、執行qmake
5.4、點擊最下放構建,釘錘標志(這是生成lib,不需要執行?run)即可。
5.5、點擊箭頭處切換到release,繼續執行1-4步。
5.6、最終會生成,debug和release兩個文件里,各有一個.a和一個.dll,如下圖;
至此,基于Crypto++的lib編譯完成。
?
二.測試QT調用;
1、新建一個qt項目;
2、main目錄下新建文件夾cryptopp;
3、在cryptopp文件夾里,新建 Include?和?Lib?共兩個子文件夾;
4、將原cryptopp564文件夾下所有頭文件(.h)文件復制到?Include文件夾;
5、將原來5.6的debug和release文件,復制到Lib文件夾里;
將以下內容追加到,當前測試項目,.pro文件結尾;
CONFIG += warn_off LIBS += -lws2_32win32:CONFIG(release, debug|release): LIBS += -L$$PWD/release/ -lCryptoPPLibelse:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/cryptopp/Lib/debug/ -lCryptoPPLibelse:unix: LIBS += -L$$PWD/ -lCryptoPPLib DEPENDPATH += $$PWD/ INCLUDEPATH+=$$PWD/cryptopp/Include?
6、包含頭文件,調用,測試,如下:
#include <QCoreApplication> #include <qdebug.h> #include <iostream>#define CRYPTOPP_DEFAULT_NO_DLL #include <dll.h> #ifdef CRYPTOPP_WIN32_AVAILABLE #include <windows.h> #endif #include "base32.h" #include "base64.h" #include <filters.h> using namespace CryptoPP; using namespace std;int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);string src="讓世界愛上中國造!";string dst;StringSource(src, true, new Base64Encoder(new StringSink(dst)));qDebug()<<"encode src="<<src.c_str()<<endl;cout<<"encode dst="<<dst<<endl;string src2="6K6p5LiW55WM54ix5LiK5Lit5Zu96YCg77yB";string dst2;StringSource(src2, true, new Base64Decoder(new StringSink(dst2)));cout<<"decode src2="<<src2<<endl;qDebug()<<"decode dst2="<<dst2.c_str()<<endl;return a.exec(); }?
結果如下:?base64編碼?base64解碼
總結
以上是生活随笔為你收集整理的QT mingw 编译Crypto++ 5.6.4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PKCS5Padding与PKCS7Pa
- 下一篇: 由MAC地址在18字节及6字节之间的转换