加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

ECC代码中调用的大数库(tommath)函数总结

发布时间:2020-12-14 02:10:38 所属栏目:大数据 来源:网络整理
导读:1.?? mp_int a typedef struct { int used,alloc,sign; mp_digit *dp; }mp_int mp_digit是无符号整数;dp是存放大整数的地址;used为实际使用的mp_digit单元;sign=0,表示非负数;=1表示负数。 2.?? mp_init 函数原型为:int mp_init(mp_int *a) 初始化mp_i

1.?? mp_int a

typedef struct

{

int used,alloc,sign;

mp_digit *dp;

}mp_int

mp_digit是无符号整数;dp是存放大整数的地址;used为实际使用的mp_digit单元;sign=0,表示非负数;=1表示负数。

2.?? mp_init

函数原型为:int mp_init(mp_int *a)

初始化mp_int结构,函数返回MP_OKAY,就可以认为该结构已正确初始化,可以安全的被库中其他函数使用

3. mp_init_set_int

函数原型:int mp_init_set_int (mp_int * a,unsigned long b);

初始化mp_int结构并设置大常量。它接受一个“长”数据类型作为输入,并且总是将其当作一个32位整数。

输入一个mp_int类型的和一个“长”整型b,输出a等于b。

4.mp_init_set

函数原型:int mp_init_set (mp_int * a,mp_digit b);

其中b是一个数据位。

初始化mp_int结构并设置小常量。例如将mp_int结构设置成一个相对较小的值(1或2等).

5. mp_toradix

函数调用形式为:int mp_toradix(mp_int *a,char *str,int radix)

此算法计算mp_int类型的a的以r为基的表示法,并把数位存在数组temp(char型)中并以字符串形式输出到屏幕上。

6. mp_prime_random_ex

函数原型:int mp_prime_random_ex(mp_int *a,int t,int size,int flags,ltm_prime_callback cb,void *dat);

*dat一般可设置为NULL。

求一定位数的素数

a为返回值,t为回测次数,通常可为10,size指产生的素数的位数

7.mp_expt_d

函数原型为:int mp_expt_d(mp_int *a,mp_digit b,mp_int *c)

此算法计算a的b次幂,其中b为单数位数字。

8. mp_sqr

函数原型为:int mp_sqr(mp_int *a,mp_int *b)

输入mp_int类型的a,输出b=a^2.分配了一个临时mp_int b来保存平方结果。

9.mp_sqrt

int mp_sqrt(mp_int *arg,mp_int *ret);

此算法为开平方根算法。

10.mp_mul_d

函数原型为:int mp_mul_d(mp_int *a,mp_int *c)

单数位乘法。此算法快速计算mp_int与单数位值的乘积。输入mp_int a和mp_digit b,输出c=ab

11.mp_mul

函数原型:int mp_mul(mp_int *a,mp_int *b,mp_int *c);

计算两个数的有符号乘积。返回结果为目标操作数c=ab。

12.mp_add

函数原型:int mp_add(mp_int *a,mp_int *c)

输入两个mp_int类型的a和b,输出有符号加法c=a+b。

13.mp_sub

函数原型:int mp_sub(mp_int *a,mp_int *c);

输入两个mp_int类型的a和b,输出有符号加法c=a-b。

14.mp_mod

函数原型为:int mp_mod(mp_int *a,mp_int *c)

输入两个mp_int类型的a和b ,输出c=a mod b,0 <= c < b

15.mp_cmp

函数原型:int mp_cmp(mp_int *a,mp_int *b)

有符号数的比较。输入两个mp_int类型的a和b,输出有符号数比较结果(a在b的左边)

函数返回值为MP_GT=1时为大于;MP_EQ=0时为等于;MP_LT=-1时为小于。

16.mp_clear

函数原型:void mp_clear(mp_int *a);

输入:mp_int类型的变量a,输出:回收为a分配的内存。

17.mp_copy

函数原型:int mp_copy(mp_int *a,mp_int *b);

该算法拷贝了mp_int结构a,算法成功终止时,mp_int结构b就和a代表同一个整数值。mp_int结构b是结构a的完整但不同的拷贝,mp_int结构a可以修改并且不会影响mp_int结构b的值。

18.mp_init_copy

函数原型:int mp_init_copy(mp_int *a,mp_int *b);

初始化mp_int结构a,并将b拷贝到a 。

19. mp_zero

函数原型:void mp_zero(mp_int *a);

输入mp_int 类型的a,并将a的内容清零。

20.mp_invmod

函数原型:int mp_invmod(mp_int *a,mp_int *c);

输入mp_int a和b,(a,b)=1,p>=2,0<a<p,输出模逆c=a^-1(mod b)。即ab=1(mod p)

21.mp_mulmod

函数原型:int mp_mulmod(mp_int *a,mp_int *c,mp_int *d);

此算法求解 d = a * b (mod c)

22. mp_submod

函数原型:int mp_submod(mp_int *a,mp_int *d);

文章来自http://hi.baidu.com/237rxd/blog/item/66a38a8bd37598739f2fb437.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读