miracl常用函数手册

把之前写过的md整理一下


最近某电的密码学实验需要用的miracl大数库,这里把官方文档里的一些常用函数做一个总结,便于查找使用。

absol

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

flash x,y or big x,y

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

add

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

参数类型:big x,y,z

功能:z=x+y

brand

函数原型:int brand()

功能:返回值一个随机整数

限制:首次使用前必须先调用irand。

注意:此生成器的加密能力不强。对于加密应用程序,请使用强例程。

bigbits

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

参数类型:int n, big x

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

  irand(time(NULL));(头文件#include<time.h>)

big_to_bytes

函数原型:int big_to_bytes(max,x,ptr,justify)

参数类型:int max;big x;char *ptr;BOOL justify

功能:描述:将正数x转换为二进制八位字符串

参数:大数字x和字节数组ptr,长度最大。进行错误检查,以确保函数在最大值>0时不会超出ptr的限制。如果max=0,则不执行检查。如果max>0且justify=TRUE,则输出将正确对齐,否则将抑制前导零。

返回值:在ptr中生成的字节数。如果justify=TRUE,则返回值为max。

限制:如果“正当性”为TRUE,则最大值必须大于0

bytes_to_big

函数原型:void bytes_to_big(len,ptr,x)

参数类型:int len; char *ptr; big x;

功能:将二进制八位字节字符串转换为大数字。二进制到大的转换。

参数:指向长度为len的字节数组ptr的指针,以及一个大的结果x。

cinnum

函数原型:int cinnum(x,f)

参数类型:flash x; FILE *f

描述:从键盘或文件中输入一个flash数字,以实例变量IOBASE的当前值作为基数。可以使用斜杠“/”来表示分子和分母,也可以使用基数点输入闪存数。

参数:一个big/flash数字x和一个文件描述符f。从键盘输入时,将f指定为stdin,否则指定为其他打开文件的描述符。要强制输入固定数量的字节,请在调用cinnum之前将实例变量INPLEN设置为所需的数量。

返回值:输入字符数。

cinstr

函数原型:int cinstr(x,s)

参数类型:flash x; char *s

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

参数:一个大的/flash数字x和一个字符串s。

返回值:输入字符数

eg:

mip->IOBASE=16; // input large hex number into big x
cinstr(x,”AF12398065BFE4C96DB723A”);

compare

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

参数类型:big x; big y

函数功能:比较两个大数的大小

返回值:x>y时返回+1, x=y时返回0, x<y时返回-1 在这里需要注意的是,compare()函数比较的是两个big类型的数,此函数的返回值是int型的+1和-1

注意:if(1)和if(-1)的结果相同

convert

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

参数类型:int n; big x

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

copy

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

参数类型:flash x,y big x ,y

函数功能:y=x

cotnum

函数原型:int cotnum(x,f)

参数类型:flash x;FILE *f

描述:将当前分配给实例变量IOBASE的值作为基数,输出一个大的或闪烁的数字到屏幕或文件中。如果实例变量RPOINT=ON,则flash数字将转换为基数点表示。否则它将作为分数输出。

参数一个大的/闪存号x和一个文件描述符f。如果f是stdout,则输出到屏幕,否则输出到用描述符f打开的文件。

返回值:输出字符数。

eg:

mip->IOBASE=16;
cotnum(x,fp);
//This outputs x in hex, to the file associated with fp.

cotstr

函数原型:int cotstr(x,s)

参数类型:flash x; char *s

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

返回值: 字符串长度

decr

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

参数类型:big x,z; int n

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

divide

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

参数类型:big x,y,z

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

注意:Example: divide(x,y,y);//x为余数,y值不

ecp_memalloc

ecp_memkill

exsign

getdig

函数原型:int getdig(x,i)

参数类型:big x; int i

描述:从一个大数字中提取一个数字。

参数:一个大的数字x,和所需的数字i。

返回值:请求的数字的值。

限制:如果所需数字不存在,则返回垃圾。

igcd

函数原型:int igcd(x,y)

参数类型:int x,y

功能:使用欧几里德方法计算两个整数的最大公约数

返回值:x和y的GCD

incr

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

参数类型:big x,z ; int n

功能:z=x+n

eg:

incr(x,2,x);/*这将使x增加2。*/

innum

函数原型:int innum(x,f)

参数类型:flash x; FILE *f

insign

函数原型:void insign(s,x)

参数类型:int s; flash x

功能:

instr

函数原型:int instr(x,s)

参数类型:flash x; char *s

功能:

irand

函数原型:void irand(seed)

参数类型:long seed

功能:初始化内部随机数系统

lgconv

函数原型:void lgconv(ln,x)

参数类型:long ln; big x

功能:将长整数转换为大数格式

mad

函数原型:void mad(x,y,z,w,q,r)

参数类型:big x,y,z,w,q,r

功能:q=(x.y+z)/w,r为余数,如果w和q不是不同的变量,则只返回余数;如果q和r不是不同的,则只返回商。如果x和z(或y和z)相同,则不会进行z的加法。

memalloc

函数原型:void *memalloc(n)

参数类型:int n

功能::在一个堆访问中为n个大变量保留空间。随后,可以通过调用mirvar_mem从该内存初始化单个大/闪存变量

返回值:指向已分配内存的指针

memkill

函数原型:void memkill(mem,n)

参数类型:char *mem; int n

功能:删除memalloc先前分配的内存并将其设置为

mirexit

函数原型:void mirexit()

功能:在MIRACL的当前实例之后清理,并释放所有内部变量。随后调用mirsys将重新初始化MIRACL系统(清除MIRACL系统,释放所有内部变量)

mirkill

函数原型:void mirkill(x)

参数类型:big x

功能: 释放内存大数所占的内存 清除MIRACL系统,释放所有内部变量。

mirsys

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

参数类型:int nd,nb

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

 miracl *mip=mirsys(500,10);//初始化500位的10进行制数
//意思是我定义的这些变量最大长度都是500位(这个位是后面进制的位数),输入、输出、运算用的进制都是10进制。

mirvar

函数原型:flash mirvar(iv)

参数类型:int iv

功能:通过为big/flash变量保留适当数量的内存位置来初始化该变量。这个内存可以通过随后调用mirkill函数来释放

eg

flash x;
x=mirvar(8);
//Creates a flash variable x=8.

mirvar_mem

函数原型:flash mirvar_mem(mem,index)

参数类型:char *mem; int index

功能:从预先分配的字节数组mem初始化big/flash变量的内存

返回值:初始化的big/flash变量

限制:mem必须已经分配并指向足够的内存

multiply

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

参数类型:big x,y,z

功能:z=x*y

negify

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

参数类型:flash x,y

功能:大数取反,y=-x

normalise

函数原型:int normalise(x,y)

参数类型:big x,y

功能:y=nx

返回值:n

nroot

函数原型:BOOL nroot(x,n,z)

参数类型:big x,z; int n;

功能:

返回值;如果找到的根是精确的,则返回布尔值TRUE,否则返回FALSE。

numdig

函数原型:int numdig(x)

参数类型:big x

功能:返回大数x中数字的个数(位数)

otnum

函数原型:int otnum(x,f)

参数类型:flash x; FILE *f

功能:使用mirsys初始调用中指定的值作为基数,向屏幕或文件输出一个big或flash数字 如果实例变量RPOINT=ON,则flash数字将转换为基数点表示。否则它将作为分数输出

返回值:输出字符数。

限制:mirsys中指定的基数必须小于或等于256。如果没有,请改用cotnum

otstr

函数原型:int otstr(x,s)

参数类型:flash x; char *s

功能:将在对mirsys的初始调用中指定的值作为基数,向指定的字符串输出一个大big或flash数字 如果实例变量RPOINT=ON,则flash数字将转换为基数点表示。否则它将作为分数输出

premult

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

参数类型:int n; big x,z

功能:z=nx

putdig

函数原型:void putdig(n,x,i)

参数类型:big x ; int i,n

功能:将一个大数的数字设置为给定值 ,n为新值

remian

函数原型:int remian(x,n)

参数类型:big x;int n

功能:当一个大数除以一个整数时,查找整数余数

返回值:余数

set_io_buffer_size

函数原型:void set_io_buffer_size(len)

参数类型:int len

功能:设置输入/输出缓冲区的大小。默认设置为1024,但需要处理非常大的数字的程序可能需要更大的I/O缓冲区

void set_user_function

函数原型:void set_user_function(func)

参数类型:BOOL (*user)(void)

功能:提供一个用户指定的函数,该函数在一些比较耗时的MIRACL函数中定期调用,特别是那些涉及模幂运算和寻找大素数的函数

size

函数原型:int size(x)

参数类型:big x

功能:尝试将大数转换为简单整数。也可用于测试big/flash变量的符号

subdivisible

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

参数类型:big x; int n;

功能: 测试n能否整除x

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

subtract

函数原型:void subtract(x,y,z)

参数类型:big x,y,z

功能:z=x-y

zero

函数类型:void zero(x)

参数类型:flash x

功能:将x置零

bigdig

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

参数类型:int n,b ; big x

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

x是生成的大数 n位长 b是进制

eg

bigdig(100,10,x);
//这将生成一个100位十进制随机数

bigrand

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

参数类型:big w,x;

功能:生成一个大的随机数。使用由irand初始化的内置简单随机数生成器,0<=x<w

两个函数的区别:

两个函数都是可以生成随机数的,但是它们的功能确实略有差异的。bigrand()是产生一个小于w的大数随机数,x<w,如果w是一个十位的十进制数,那么x可能是一个十位的十进制数,只有九位的十进制数,也可能使只有一位的十进制数;bigdig()是产生一个指定长度的进制的随机数,比如说指定了产生一个十位的十进制数,那么这个函数就会严格的产生一个十位的十进制数。

egcd

函数原型:int egcd(x,y,z)

参数类型:big x,y,z;

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

expb2

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

参数类型: int n; big x;

功能:计算2的n次方的大数 x=2^n.

eg

expb2(1398269,x);   //2^1398269decr(x,1,x);        //x = x - 1mip->IOBASE=10;     //使用10进制cotnum(x,stdout);   //输出到屏幕

expint

函数原型:void expint(b, n, x)

参数类型:int b,n; big x;

功能:计算b的n次方的大数 x=b^n.

fft_mult

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

参数类型:big x,y,z;

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

gprime

函数原型:void gprime(n)

参数类型:int n

功能:将达到某个限制的所有素数生成实例数组素数,并以零结尾

hamming

函数原型:int hamming(n)

参数类型:big n

功能:计算一个大数的汉明权重–汉明距离(实际上是二进制表示中的1的数目)

invers

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

参数原型:unsigned int x,y;

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

isprime

函数原型:BOOL isprime(x)

参数类型:big x;

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

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

jac

函数原型:int jac(x,n)

参数类型:unsigned int x,n;

功能:计算雅可比符号的值

jack

函数原型:int jack(x,n)

参数类型:big x,n

功能:计算雅可比符号的值

logb2

函数原型:int logb2(x)

参数类型:big x;

功能: 计算一个大数(实际上是其中的位数)的基数2的近似整数log

lucas

函数原型:void lucas(x,e,n,vp,v)

参数类型:big x,e,n,vp,v

功能:执行Lucas模幂运算。在内部使用蒙哥马利算法。通过调用特殊的汇编语言例程来实现Montgomery算法,可以为特定的模块进一步加速该函数。见powmod

power

函数原型: void power(x,n,z,w)

参数类型: long n; big x,z,w;

功能:w=xn.如果w≠z则w=xn mod z

powmod

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

参数类型:big x,y,z,w;

功能:模幂运算,w=x^y mod z

sfbit

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

参数类型:big x,z;int n;

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

xgcd

函数原型:int xgcd(x,y,xd,yd,z)

参数类型: big x,y,xd,yd,z;

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

eg

xgcd(x,p,x,x,x);  //计算x^-1 mod p
/* x = 1/x mod p  (p is prime) *

https://wenku.baidu.com/view/1738a6878762caaedd33d4b4.html?sxts=1602327937928&word=miracl%E5%BA%93%E6%89%8B%E5%86%8C

xgcd(Mi1, m1, Mj1, Mj1, Mj1);//Mj1为Mi1的逆
xgcd(Mi2, m2, Mj2, Mj2, Mj2);//Mj2为Mi2的逆
xgcd(Mi3, m3, Mj3, Mj3, Mj3);//Mj3为Mi3的逆
//扩展的欧几里得算法
//Input
x = 13
y = 17
xgcd(x, y, xd, yd, z)
//Output
xd = 4
yd = 3
z = 1

实例变量IOBASE

IOBASE是用于控制输入和输出的进制问题的,可以在程序中随意更改, 必须大于或等于2且小于或等于256。使用实例是像这样的:mip->IOBASE=16,这样子输入的变量和输出的变量所使用的进制都是十六进制

miracl常用函数手册相关推荐

  1. wordpress常用函数手册

    WordPress默认数据库表 wordpress在没有插件的情况下,默认有11个表,注意不要删除!! wp_commentmeta:存储评论的元数据 wp_comments:存储评论 wp_link ...

  2. 全新开源,《Pytorch常用函数函数手册》开放下载!内含200余个函数!

    近期有很多小伙伴在后台咨询有没有关于Pytorch函数使用的学习资料.Pytorch是目前常用的深度学习框架之一,深受学生党的喜爱,小白本人也是使用的Pytorch框架.为了帮助更多小伙伴,小白学视觉 ...

  3. 哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...

    近期有很多小伙伴在公众号后台咨询有没有关于Pytorch函数使用的学习资料.Pytorch是目前常用的深度学习框架之一,深受学生党的喜爱,小白本人也是使用的Pytorch框架.为了帮助更多小伙伴,小白 ...

  4. php函数 chm,php函数手册chm最新

    c 语言常用函数手册 chm 格式 /... PHP GD函数库_计算机软件及应用_IT/计算机_专业资料.GD 函数库 一. 安装 GD 库 1. 编辑 PHP 配置文件-php.ini 2. 启用 ...

  5. C语言函数手册:c语言库函数大全|C语言标准函数库|c语言常用函数查询

    http://see.xidian.edu.cn/cpp/u/hanshu/ 本函数手册涵盖了常用的C语言函数,从函数功能.参数和返回值三方面做了详细的说明,并且给出了大量实例,加深读者的理解. 为了 ...

  6. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  7. c语言各常用函数,c语言常用函数速查手册 pdf

    C语言常用函数速查手册是一本非常全面系统的讲述了学习c语言相关的常用函数,包括常见的350多个常用函数,且每一个常用函数后面都会有一个经典的示例帮助更快掌握C语言,欢迎下载. 图书简介: 为了方便查找 ...

  8. 【c/c++】刷算法题时常用的函数手册 持续更新--

    在做算法题的时候,有时候为了高效的做题,我们会使用一些函数,但是常用的函数确实太多了,时不时的会忘记一些 于是我整理了一些常用的函数,方便自己查找和别人使用. 都是超链接,点击直接跳转到对应的内容. ...

  9. Arduino 语法、函数使用、最常用函数、arduino教程、arduino笔记、参考手册

    文章目录 数字 I/O 模拟 I/O 高级 I/O 数学运算 三角函数 随机数 位操作 设置中断函数 开关中断 通讯 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入.详情请见di ...

最新文章

  1. java bufferedwriter 写入tab_一个Java程序员的成长历程(014,015)天
  2. 字节跳动屡战社交,这次抖音亲自上场了
  3. Android获得图片资源的三种方式
  4. Gridview中实现求和统计功能
  5. 用过的人都知道,AWT_Swing_多选框功能可是很好用啊
  6. React-组件生命周期
  7. Ubuntu 对比度调节
  8. js获取当前url路径
  9. geometry 矢量数据操作
  10. 数据中心断路器整定值计算(二)
  11. 第一章 行列式 第六节 行列式按行(列)展开
  12. 从Facebook上市看“社交网站效应”
  13. dategurd oracle_Oracle Data Guard
  14. 蓝桥云算法题之火柴棒等式——Python满分解答
  15. 【GTASA】Sanny Builder 不能编译 main.scm,报错 “Incorrect number of the conditions“
  16. Principal Component Analysis 主成分分析 【学习笔记】
  17. java数组常见异常:下标越界、空指针异常
  18. (三)SpringCloud实战之openfeign服务调用
  19. AS400如何检查谁删除了文件
  20. PDF文件怎么设置加密

热门文章

  1. matlab 分数阶 混沌分叉图,如何做出poincare 图或混沌分叉图
  2. 大数据软件开发培训中心哪家比较好
  3. (二)设计模式——构建器,原型模式
  4. 52单片机总线控制c语言程序,C52单片机的应用(连接、编程、测试) - 全文
  5. 三菱FX3U PLC FX3U_485BD自由口跟23个上海众晨Z2000变频器通讯,读运行电流,写入设定频率
  6. java永远的冒险岛珍藏版_求些像冒险岛那样的横版单机游戏
  7. 关于Windows 8使用WMP播放音乐时WUDFHost跑CPU和硬盘的问题解决
  8. 联想微型计算机c325参数,超低功耗 联想C325一体电脑报价3299
  9. BIM族库下载——项目监控设备族库
  10. win10系统没声音 服务器,win10系统没有声音是怎么回事 win10没声音解决方法