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