【密碼學編程·Miracl函數(shù)庫】生成靜態(tài)庫miracl.lib
MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所開發(fā)的一套關于大數(shù)運算函數(shù)庫,用來設計與大數(shù)運算相關的密碼學之應用,包含了RSA 公開密碼學、Diffie-Hellman密鑰交換(Key Exchange)、AES、DSA數(shù)字簽名,還包含了較新的橢圓曲線密碼學(Elliptic Curve Cryptography)等等。
準備工作
下載Miracl:https://github.com/miracl/MIRACL
解壓后,顯示共44個項目(文件和文件夾一共44個)

拿到源文件后,編譯生成靜態(tài)文件miracl.lib,具體編譯方法稍后介紹。
編譯環(huán)境采用:Visio Studio 2017
編譯靜態(tài)庫文件.lib
打開lib文件夾下的bc32doit.bat文件(以文本格式打開)

根據(jù)要求,將下列文件全部復制到一個文件夾中(新建一個文件夾存儲),這些文件可能分布在不同文件夾中
mirdef.h32
mirdef.h
添加 big.h, ec2.h, ecn.h, flash.h, zzn.h(非必須,可以沒有)
?mrcore.c
?mrarth0.c
?mrarth1.c
?mrarth2.c
mralloc.c
mrsmall.c
mrio1.c
?mrio2.c
?mrgcd.c
?mrjack.c
?mrxgcd.c
?mrarth3.c
?mrbits.c
?mrrand.c
?mrprime.c
?mrcrt.c
?mrscrt.c
?mrmonty.c
?mrpower.c
?mrsroot.c
?mrcurve.c
?mrfast.c
?mrshs.c
?mrshs256.c
?mrshs512.c
?mrsha3.c
?mrfpe.c
?mraes.c
?mrgcm.c
?mrstrong.c
?mrlucas.c
?mrzzn2.c
?mrzzn2b.c
?mrzzn3.c
?mrzzn4.c
?mrbrick.c
?mrebrick.c
?mrec2m.c
mrecn2.c
?mrgf2m.c
?mrflash.c
?mrfrnd.c
?mrdouble.c
?mrround.c
?mrbuild.c
?mrflsh1.c
?mrpi.c
mrflsh2.c
?mrflsh3.c
mrflsh4.c
打開Visual stadio 2017,選擇【文件】-【新建】-【項目】-【Visual C++】-【空項目】,項目名稱隨便取

將miracl文件夾下的文件放到新項目的工程目錄下,和工程源文件在同一級

在項目名稱上右鍵-選擇【添加】-【現(xiàn)有項】,將復制過來的所有文件都添加進來

添加進來的文件如圖所示

在項目名稱上右鍵-選擇【屬性】,修改參數(shù)內(nèi)容,然后【應用】-【確定】

在項目名稱上右鍵-選擇【生成】或者【重新生成】

至此編譯完成,編譯后的文件存在debug文件夾下

測試靜態(tài)庫文件
重新打開VS2017,選擇【文件】-【新建】-【項目】-【Visual C++】-【空項目】,并為項目命名
將編譯好的靜態(tài)文件和前面用到的所有頭文件全部復制到新的測試工程源文件中,并將靜態(tài)庫文件的名稱改為miracl(重命名"CompileMiracl.lib" 為 "miracl.lib" ,"CompileMiracl.pdb" 為 "miracl.pdb")

在項目名上右鍵-現(xiàn)在【添加】-【現(xiàn)有項】,將前面添加到源文件加下的所有文件都添加到工程中

在項目名上右鍵-【添加】-【新建項】-【C++文件】,新建一個main.c文件(源文件),將下面的代碼,然后點擊運行即可
extern "C"
{
#include "miracl.h"
#include "mirdef.h"
}
#pragma comment(lib,"miracl.lib")
int main()
{
miracl *mip = mirsys(500, 16); //初始化miracl系統(tǒng)
?
big n = mirvar(8); //初始化n,必須有
?
cotnum(n, stdout); //打印n
cinnum(n, stdin); //輸入n
cotnum(n, stdout); //再次打印n
return 0;
}

至此,測試成功輸出