资源描述:
《ECC代码中调用的大数库函数总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1. mp_intatypedefstruct{intused,alloc,sign;mp_digit*dp;}mp_intmp_digit是无符号整数;dp是存放大整数的地址;used为实际使用的mp_digit单元;sign=0,表示非负数;=1表示负数。2. mp_init函数原型为:intmp_init(mp_int*a)初始化mp_int结构,函数返回MP_OKAY,就可以认为该结构已正确初始化,可以安全的被库中其他函数使用3.mp_init_set_int函数原型:intmp_init_set_int(mp_int*a,unsigned
2、longb);初始化mp_int结构并设置大常量。它接受一个“长”数据类型作为输入,并且总是将其当作一个32位整数。输入一个mp_int类型的和一个“长”整型b,输出a等于b。4.mp_init_set函数原型:intmp_init_set(mp_int*a,mp_digitb);其中b是一个数据位。初始化mp_int结构并设置小常量。例如将mp_int结构设置成一个相对较小的值(1或2等).5.mp_toradix函数调用形式为:intmp_toradix(mp_int*a,char*str,intradix)此算法计算mp_int类型的a的以r为基
3、的表示法,并把数位存在数组temp(char型)中并以字符串形式输出到屏幕上。6.mp_prime_random_ex函数原型:intmp_prime_random_ex(mp_int*a,intt,intsize,intflags,ltm_prime_callbackcb,void*dat);*dat一般可设置为NULL。求一定位数的素数a为返回值,t为回测次数,通常可为10,size指产生的素数的位数7.mp_expt_d函数原型为:intmp_expt_d(mp_int*a,mp_digitb,mp_int*c)此算法计算a的b次幂,其中b为单数
4、位数字。8.mp_sqr函数原型为:intmp_sqr(mp_int*a,mp_int*b)输入mp_int类型的a,输出b=a^2.分配了一个临时mp_intb来保存平方结果。9.mp_sqrtintmp_sqrt(mp_int*arg,mp_int*ret);此算法为开平方根算法。10.mp_mul_d函数原型为:intmp_mul_d(mp_int*a,mp_digitb,mp_int*c)单数位乘法。此算法快速计算mp_int与单数位值的乘积。输入mp_inta和mp_digitb,输出c=ab11.mp_mul函数原型:intmp_mul(m
5、p_int*a,mp_int*b,mp_int*c);计算两个数的有符号乘积。返回结果为目标操作数c=ab。12.mp_add函数原型:intmp_add(mp_int*a,mp_int*b,mp_int*c)输入两个mp_int类型的a和b,输出有符号加法c=a+b。13.mp_sub函数原型:intmp_sub(mp_int*a,mp_int*b,mp_int*c);输入两个mp_int类型的a和b,输出有符号加法c=a-b。14.mp_mod函数原型为:intmp_mod(mp_int*a,mp_int*b,mp_int*c)输入两个mp_int
6、类型的a和b,输出c=amodb,0<=c7、,算法成功终止时,mp_int结构b就和a代表同一个整数值。mp_int结构b是结构a的完整但不同的拷贝,mp_int结构a可以修改并且不会影响mp_int结构b的值。18.mp_init_copy函数原型:intmp_init_copy(mp_int*a,mp_int*b);初始化mp_int结构a,并将b拷贝到a。19.mp_zero函数原型:voidmp_zero(mp_int*a);输入mp_int类型的a,并将a的内容清零。20.mp_invmod函数原型:intmp_invmod(mp_int*a,mp_int*b,mp_int*c);输入
8、mp_inta和b,(a,b)=1,p>=2,0