MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange)、AES、DSA数字签名,还包含了较新的椭圆曲线密码学(Elliptic Curve Cryptography)等等。运算速度快,并提供源代码。国外著名密码学函数库还有:GMP、NTL、Crypto++、LibTomCrypt(LibTomMath)、OpenSSL等。
下面说明怎样在windows32平台下使用MIRACL。
一、编译生成miracl.lib
1. 在github获取miracl的源码MIRACL-master.zip https://github.com/miracl/MIRACL
2. 在Visual Studio 2005中进行编译。
——新建项目miracl,选择“静态库”,不使用预编译头。
——点击“头文件”选项夹,除了选择miracl.h和mirdef.h外,还要加上big.h, ec2.h, ecn.h, flash.h, zzn.h。
——点击“源文件”选项夹,添加现有项。从下载的MIRACL-master.zip中添加源码文件。
此处需要注意,在添加source file的时候请参照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
——点击“生成”,编译生成了miracl.lib。
二、使用miracl
1. 打开VS 2005,创建一个新的win32控制台应用,不使用预编译头
2. 添加miracl文件夹下include文件夹路径及生成miracl.lib文件的路径
之后在“附加依赖项”输入miracl.lib用;隔开
之后,添加MIRACL-master.zip中的示例文件:brent.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;
}
运行结果如下,每次生成的不一定一样,因为三个大数是随机生成的。
备注:如果使用的为Vistual Studio 2017等编译器,则指定include路径和miracl.lib文件路径的界面会不一样