设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 娱乐 服务 专业 百度
当前位置: 首页 > 大数据 > 正文

MIRACL大数运算库使用手册

发布时间:2021-01-24 03:37 所属栏目:[大数据] 来源:网络整理
导读:一.MIRACL简介 MIRACL(Multiprecision Integer and RationalArithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange

一.MIRACL简介

MIRACL(Multiprecision Integer and RationalArithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange)、AES、DSA数字签名,还包含了较新的椭圆曲线密码学(Elliptic CurveCryptography)等等。运算速度快,并提供源代码。MIARCL是当前使用比较广泛的基于公钥加密算法保护实现的大数库之一,据说要使用该库用于商业软件,需要交纳一笔昂贵的授权费——1000$。

?

二.MIRACL常用函数调用手册

声明:此处只列出和大数相关的简单运算函数,以及产生大数随机数的函数调用手册,具体请查看manual.doc文档。不当之处,请大家批评指正!

?

函数原型: void absol(big x,big y);

功能说明: 取x的绝对值,y=|x|

?

函数原型: void add(big x,big y,big z);

功能说明: 两个大数相加,z=x+y

Example: add(x,x,x);?// This doubles the value of x.

?

函数原型: void bigbits(int n,big x);

功能说明: 产生一个n位的大整数,初始化随机种子由irand函数实现

Example: bigbits(100,x); //This generates a 100 bitrandom number

?

函数原型: int cinstr(big x,char*s);

功能说明: 将大数字符串转换成大数

返回值: 输入字符数的个数

Example:??? mip->IOBASE=16; // input large hex number into big x

??????? ??? cinstr(x,”AF12398065BFE4C96DB723A”);

?

函数原型: int compare(big x,big y);

功能说明: 比较两个大数的大小

返回值: x>y时返回+1,x=y时返回0,x<y时返回-1

?

函数原型: void convert(int n,big x);

功能说明: 将一个整数n转换成一个大数x

?

函数原型: void copy(big x,big y);

功能说明: 将一个大数赋值给另一个大数,y=x

?

函数原型: int cotstr(big x,char *s);

功能说明: 将一个大数根据其进制转换成一个字符串

返回值: 字符串长度

?

函数原型: void decr(big x,int n,big z) ;

功能说明: 将一个大数减去一个整数, z=x-n.

?

函数原型: void divide(big x,big z);

功能说明: 两个大数相除,z=x/y; x=x mod y,当变量y和z相同时,x为余数,商不返回(即y的值不变);当x和z相同时,x为商,余数不返回。

Example:??? divide(x,y,y);//x为余数,y值不变

?

函数原型: BOOL divisible(big x,big y)

功能说明: 测试x能否整除y

返回值: y除x余数为0,返回TRUE,否则返回FALSE

?

函数原型: intigcd(int x,int y)?;

功能说明: 返回两个整数的最大公约数

?

函数原型: void incr(big x,big z);

功能说明: 将一个大数加上一个整数, z=x+n

Example:??? incr(x,2,x);? /* This increments x by 2. */

?

函数原型: void mirkill(big x);

功能说明: 释放内存大数所占的内存

?

函数原型: miracl *mirsys(int nd,int nb);

功能说明: 初始化MIRACL系统,该函数必须在调用MIRACL库函数之前先执行

Example:??? miracl *mip=mirsys(500,10);//初始化500位的10进行制数

?

函数原型: void mirexit();

功能说明: 清除MIRACL系统,释放所有内部变量

?

函数原型: void multiply(big x,big z);

功能说明: 两个大数相乘,z=x.y

?

函数原型: void negify(big x,big y);

功能说明: 大数取负号,y=-x.

?

函数原型: int numdig(big x);

功能说明: 返回大数x中数字的个数

?

函数原型: void premult(big x,big z);

功能说明: 一个大数乘以一个整数,z=n.x

?

函数原型: int subdiv(big x,big z);

功能说明: 一个大数除以一个整数,z=x/n.

返回值: 余数

?

函数原型: BOOL subdivisible(big x,int n)

功能说明: 测试n能否整除x

返回值: x除以n余数为0,返回TRUE,否则返回FALSE

?

函数原型: void bigdig(int n,int b,big x);

功能说明: 产生一个指定长度的进制的随机数,该函数使用内置的随机数发生器,初始化种子调用irand函数

Example: bigdig(100,10,x);? //产生一个100位的10进制随机数

?

函数原型: void bigrand(big w,big x);

功能说明: 使用内置的随机数发生器,产生一个小于w的大数随机数,x<w

?

函数原型:?? int egcd(bigx,big z);

功能说明:计算两个大数的最大公约数,z=gcd(x,y)

?

函数原型: void expb2(int n,big x)

功能说明: 计算2的n次方的大数

Example:??? expb2(1398269,x);?? //2^1398269

??? ??????? decr(x,1,x);??????? //x = x - 1

??? ??????? mip->IOBASE=10;???? //使用10进制

??? ??????? cotnum(x,stdout);?? //输出到屏幕

This calculates and prints out the largest known primenumber (on a true 32-bit computer with lots of memory!)

?

函数原型:?? void expint(intb,big x);

功能说明: 计算b的n次方的大数

?

函数原型: void fft_mult(big x,big z);

功能说明: 使用Fast Fourier算法计算两个大数乘积,z=x.y

?

函数原型:?? unsigned int invers(unsigned int x,unsigned int y);

功能说明:计算两个无符号整数(要求互素)的模逆,返回x-1? mod y

?

函数原型:?? BOOL isprime(bigx);

功能说明:判断一个大数是否为素数,使用概率测试算法

返回值: x为素数返回TRUE,否则返回FALSE

?

函数原型: void powmod(big x,big z,big w);

功能说明: 模幂运算,w=xy mod z

?

函数原型: void sftbit(big x,big z);

功能说明:将一个大数左移或右移n位,n为正数时左移,负数时右移

?

函数原型: int xgcd(bigx,big xd,big yd,big z);

功能说明: 计算两个大数的扩展最大公约数,也可以用来计算模逆,这个函数比mad 函数运算速度稍慢。z=gcd(x,y)=x.xd+y.yd

Example:??? xgcd(x,p,x);? //计算x^-1 mod p

/* x = 1/x mod p? (p is prime) */

?

PS : 我只copy了我需要的,因为不在Windows环境开发,所以第三部分MIRACL函数库基于Windows环境的调用举例我省略了,如果需要还请看这篇博客:http://www.voidcn.com/article/p-puvfghdo-ds.html

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读