MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange)、AES、DSA数字签名,还包含了较新的椭圆曲线密码学(Elliptic Curve Cryptography)等等。
准备工作
下载Miracl:https://github.com/miracl/MIRACL
解压后,显示共44个项目(文件和文件夹一共44个)
拿到源文件后,编译生成静态文件miracl.lib,具体编译方法稍后介绍。
编译环境采用:Visio Studio 2017
(还可以参考B站专栏上分享的具体步骤,里面的图文比较清楚)
打开lib文件夹下的bc32doit.bat文件(以文本格式打开)
根据要求,将下列文件全部复制到一个文件夹中(新建一个文件夹存储),这些文件可能分布在不同文件夹中
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文件夹下的文件放到新项目的工程目录下,和工程源文件在同一级
在项目名称上右键-选择【添加】-【现有项】,将复制过来的所有文件都添加进来
在项目名称上右键-选择【属性】,修改参数内容,然后【应用】-【确定】
在项目名称上右键-选择【生成】或者【重新生成】
至此编译完成,编译后的文件存在debug文件夹下
重新打开VS2017,选择【文件】-【新建】-【项目】-【Visual C++】-【空项目】,并为项目命名
将编译好的静态文件和前面用到的所有头文件全部复制到新的测试工程源文件中,并将静态库文件的名称改为miracl(重命名"CompileMiracl.lib" 为 “miracl.lib” ,“CompileMiracl.pdb” 为 “miracl.pdb”)
在项目名上右键-现在【添加】-【现有项】,将前面添加到源文件加下的所有文件都添加到工程中
在项目名上右键-【添加】-【新建项】-【C++文件】,新建一个main.c文件(源文件),将下面的代码,然后点击运行即可
extern "C"
{
#include "miracl.h"
#include "mirdef.h"
}
#pragma comment(lib,"miracl.lib")
int main()
{
miracl *mip = mirsys(500, 16); //初始化miracl系统
big n = mirvar(8); //初始化n,必须有
cotnum(n, stdout); //打印n
cinnum(n, stdin); //输入n
cotnum(n, stdout); //再次打印n
return 0;
}
至此,测试成功输出