MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所開發(fā)的一套關(guān)于大數(shù)運(yùn)算函數(shù)庫乡革,用來設(shè)計(jì)與大數(shù)運(yùn)算相關(guān)的密碼學(xué)之應(yīng)用,包含了RSA 公開密碼學(xué)命浴、Diffie-Hellman密鑰交換(Key Exchange)犀被、AES椅您、DSA數(shù)字簽名,還包含了較新的橢圓曲線密碼學(xué)(Elliptic Curve Cryptography)等等寡键。運(yùn)算速度快掀泳,并提供源代碼。國(guó)外著名密碼學(xué)函數(shù)庫還有:GMP西轩、NTL员舵、Crypto++、LibTomCrypt(LibTomMath)藕畔、OpenSSL等马僻。
? ? ? ? 下面說明怎樣在windows32平臺(tái)下使用MIRACL。
一注服、編譯生成miracl.lib
1. 在github獲取miracl的源碼MIRACL-master.zip?? https://github.com/miracl/MIRACL
2. 在Visual Studio 2005中進(jìn)行編譯韭邓。
——新建項(xiàng)目miracl,選擇“靜態(tài)庫”溶弟,不使用預(yù)編譯頭女淑。
——點(diǎn)擊“頭文件”選項(xiàng)夾,除了選擇miracl.h和mirdef.h外辜御,還要加上big.h, ec2.h, ecn.h, flash.h, zzn.h鸭你。
——點(diǎn)擊“源文件”選項(xiàng)夾,添加現(xiàn)有項(xiàng)。從下載的MIRACL-master.zip中添加源碼文件袱巨。
此處需要注意阁谆,在添加source file的時(shí)候請(qǐng)參照ms32doit.bat里面的C 文件列表。
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
mrlucas.c
mrzzn2.c
mrzzn2b.c
mrzzn3.c
mrzzn4.c
mrshs.c
mrshs256.c
mrshs512.c
mrsha3.c
mrfpe.c
mraes.c
mrgcm.c
mrstrong.c
mrbrick.c
mrebrick.c
mrgf2m.c
mrec2m.c
mrecn2.c
mrflash.c
mrfrnd.c
mrdouble.c
mrround.c
mrbuild.c
mrflsh1.c
mrpi.c
mrflsh2.c
mrflsh3.c
mrflsh4.c
mrmuldv.c
big.cpp
zzn.cpp
ecn.cpp
ec2.cpp
brute.cpp
brent.cpp
pk-demo.cpp
bmark.c
flash.cpp
——點(diǎn)擊“生成”瓣窄,編譯生成了miracl.lib笛厦。
二、使用miracl
1. 打開VS 2005俺夕,創(chuàng)建一個(gè)新的win32控制臺(tái)應(yīng)用裳凸,不使用預(yù)編譯頭
2. 添加miracl文件夾下include文件夾路徑及生成miracl.lib文件的路徑
之后在“附加依賴項(xiàng)”輸入miracl.lib用;隔開
之后,添加MIRACL-master.zip中的示例文件:brent.c劝贸。
運(yùn)行結(jié)果
也可以自己輸入如下代碼進(jìn)行測(cè)試
#include "miracl.h"
#include <time.h>
int _tmain(int argc, _TCHAR* argv[])
{
??? inti;
??? bigx,y,z;
??? miracl*mip = mirsys(1000, 16);
??? x= mirvar(0);
??? y= mirvar(0);
??? z= mirvar(0);
??? bigbits(100,x);
??? bigbits(100,y);
??? bigbits(100,z);
??? add(x,y, z);
??? cotnum(z,stdout);
? ? return0;
}
運(yùn)行結(jié)果如下姨谷,每次生成的不一定一樣,因?yàn)槿齻€(gè)大數(shù)是隨機(jī)生成的映九。
備注:如果使用的為Vistual Studio 2017等編譯器梦湘,則指定include路徑和miracl.lib文件路徑的界面會(huì)不一樣