C语言:rsa算法原理 (三)

2014-11-24 00:40:23 · 作者: · 浏览: 136
-失败,1-成功。

N. 大数的乘法

gChar gMul(gBigInt *a, gBigInt *b);//乘

功能:对大数a和大数b进行乘法运算,考虑它们的符号。

参数:

a:传入一个大数,传出相乘的结果。

b:传入另一个大数。

返回值:0-失败,1-成功。

gChar gMulInt(gBigInt *a, gSInt b);

功能:对大数a和整数b进行乘法运算,考虑它们的符号。

参数:

a:传入一个大数,传出相乘的结果。

b:传入一个一般整数。

返回值:0-失败,1-成功。

O. 大数的除法

gChar gDiv(gBigInt *a, gBigInt *b);//除

功能:对大数a和大数b进行除法运算,考虑它们的符号。

参数:

a:传入一个大数,传出相除的结果。

b:传入另一个大数。

返回值:0-失败,1-成功。

gChar gDivInt(gBigInt *a, gSInt b);

功能:对大数a和整数b进行除法运算,考虑它们的符号。

参数:

a:传入一个大数,传出相除的结果。

b:传入一个一般整数。

返回值:0-失败,1-成功。

P. 大数的取余

gChar gMod(gBigInt *a, gBigInt *b);//取余

功能:对大数a和大数b进行取余运算,考虑它们的符号。

参数:

a:传入一个大数,传出取余的结果。

b:传入另一个大数。

返回值:0-失败,1-成功。

gChar gModInt(gBigInt *a, gSInt b);

功能:对大数a和整数b进行取余运算,考虑它们的符号。

参数:

a:传入一个大数,传出取余的结果。

b:传入一个一般整数。

返回值:0-失败,1-成功。

Q. 欧几里德算法

gChar gEuc(gBigInt *a,gBigInt *b);//欧几里德算法

功能:对大数a和大数b执行欧几里德算法,结果放到a中。即用辗转相除的思想,求满足aX≡1 MOD b的X的值,也即求满足aX-bY=1的较小的大数X和Y的值。

其中用到了递归的思想,运算后,大数a和大数b,都改变了。

参数:

a:传入一个大数,传出满足aX-bY=1的X的值。

b:传入另一个大数,传出满足aX-bY=1的Y的值

返回值:0-失败,1-成功。

R. 蒙格马利算法

gChar gMon(gBigInt *a, gBigInt *b, gBigInt *c);//蒙格马利算法

功能:对大数a,大数b和大数c执行蒙格马利算法,结果放到a中。

即用指数降阶的思想,求算式a^b MOD c的值。至于降阶的原理,请参考相关书籍。

参数:

a:传入一个大数,传出运算的结果。

b:传入另一个大数。

c:传入第三个大数。

返回值:0-失败,1-成功。

S. 最大公约数

gChar gGcd(gBigInt *a, gBigInt *b);//最大公约数

功能:用辗转相除法,求大数a和大数b的最大公约数。

参数:

a:传入一个大数,传出a和b的最大公约数

b:传入另一个大数。

返回值:0-失败,1-成功。


摘自 脉凌网络