QT5中引入GMSSL庫

易阳Louis發表於2024-10-09

近來專案中需要使用加密演算法,對上/下位機之間的訊息進行加密。客戶要求使用國密演算法庫,不能使用國際上通用的AES、RSA等演算法。

國密即國家密碼局認定的國產密碼演算法。主要有SM1,SM2,SM3,SM4。金鑰長度和分組長度均為128位。
其中SM1沒有開源,其他的均開源。

原始碼編譯

開源的國密演算法全網滿天飛,C語言實現到處都是。
調研發現有一個清華的開源庫(GMSSL)可用,而且支援大多數國密演算法,最新版本也不太老(2022),所以選擇GMSSL庫。

下載的版本:

其中EXE安裝程式是編譯好的64bit版本,因為我使用的是QT MinGW-32bit編譯器,所以稍微麻煩一點,需要自己編譯32bit版本。
選擇32bit的工具:

編譯GMSSL原始碼參考部落格:



VS2022引入GMSSL

64bit版本

32bit版本




32bit必須把dll動態連結庫複製到exe所在目錄才能執行,64bit不是必須。

結果:

QT5中引入GMSSL庫

本地安裝的是qt5.14.2\mingw73_32,只能使用32bit版本。
在專案上右鍵-新增庫

外部庫

編譯成功後執行,使用SM1輸出解密後的明文:

相關文章