Miracl库学习 |
您所在的位置:网站首页 › gmp库常用函数 › Miracl库学习 |
一.MIRACL简介
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等。 二.MIRACL函数库调用举例 所需文件:数运算静态库文件ms32.lib和头部文件miracl.h和mirdef.h。 为项目添加如下头文件的包含,此处使用extern "C"是表示用C的方式编译,因为ms32.lib是C的库,不是C++的库。 extern "C" { #include "miracl.h" #include "mirdef.h" } 在_tmain函数中插入如下代码,以测试大数运算情况。 miracl *mip = mirsys(400,10); //初始化一个400位10进制的大数系统 big x,y,z; x = mirvar(177); y = mirvar(79); z = mirvar(0); divide(x, y, z); //x=x mod y, z=x/y
cotnum(x,stdout); //x=19 cotnum(y,stdout); //y=79 cotnum(z,stdout); //z=2
multiply(x, y, z); //z=x*y mip->IOBASE=16; //将原来的10进制改为16进制模式 cotnum(z, stdout); //5DD
/* 测试13^-1 mod 2436 = 937 x = mirvar(13); y = mirvar(2436);
xgcd(x, y, z, z, z); std::couty时返回+1, x=y时返回0, x属性中->配置属性->链接器->输入->在忽略特定库中写入打不开的文件的名称libc.lib 无法解析的外部符号 __iob : #ifdef __cplusplusextern "C" #endifFILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |