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_digit b, 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 *b, mp_int *c) 输入两个mp_int类型的a和b,输出有符号加法c=a+b。 13.mp_sub 函数原型:int mp_sub(mp_int *a, mp_int *b, mp_int *c); 输入两个mp_int类型的a和b,输出有符号加法c=a-b。 14.mp_mod 函数原型为:int mp_mod(mp_int *a, mp_int *b, 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 *b, 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 *b, mp_int *c, mp_int *d); 此算法求解 d = a * b (mod c) 22. mp_submod 函数原型:int mp_submod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); |
文章来自http://hi.baidu.com/237rxd/blog/item/66a38a8bd37598739f2fb437.html