设为首页 加入收藏

TOP

C语言:rsa算法原理 (二)
2014-11-24 00:40:23 来源: 作者: 【 】 浏览:124
Tags:语言 :rsa 算法 原理

参数:

p:待检测的随机大数。

返回值:0-可能是素数,其它-为能整除p的小素数或1.

E. Rabin-Miller检测

gChar gRabinMillerTest(gBigInt *p,int tNum);

功能:用Rabin-Miller算法,对大数p进行tNum次检测,判断p是否可能为素数。

参数:

p:待检测的随机大数。

tNum:检测的次数,它可以决定该检测的可信度。

返回值:0-失败或通不过,1-成功并通过,说明p可能是素数。

F. 随机产生大素数

gChar gGeneratePrime(gBigInt *p);

功能:随机生成一个大素数。

参数:

p:随机生成的大素数。

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

G. 顺序搜索大素数

gChar gGeneratePrimeEx(gBigInt *p, int flg);

功能:根据标志flg,递增或递减地搜索p附近的大素数。

参数:

p:搜索到的大素数。

Flg:方向标志,g_INCREASE-递增,g_DECREASE-递减。

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

H. 字符串与大数的转换

gChar gStr2BigInt(gBigInt *gbi,char *str,int flg);

功能:根据标志flg,将表示成10进制或16进制形式的字符串str转换成大数gbi.

参数:

gbi:转换成的大数。

Str:待转换的字符串。

Flg:标志,OCT_FLG-8进制,DEC_FLG-10进制,HEX_FLG-16进制。

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

gChar gBigInt2Str(char *str,gBigInt *gbi,int flg);

功能:根据标志flg,将大数gbi转换成10进制或16进制形式表示的字符串str.

参数:

Str:转换成的字符串。

gbi:待转换的大数。

Flg:标志,OCT_FLG-8进制,DEC_FLG-10进制,HEX_FLG-16进制。

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

I. 一般整数的乘除

gUInt gIntMul(gUInt *a, gUInt b);

功能:一般整数的乘法。在函数内部,对整数a和b进行扩展,然后与b相乘,把结果放在a中返回,进位作为返回值。

参数:

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

b:传入一个整数,作乘数。

返回值:两个整数相乘的进位。失败时,返回0.

gUInt gIntDiv(gUInt *ah, gUInt *al, gUInt b);

功能:一般整数的除法。在函数内部,将整数ah和al合并成一个扩展了的整数,然后除以整数b,把结果的高位放到ah中,低位放到al中返回,余数作为返回值。

参数:

ah:传入一个整数,作为被除数的高位;传出相除后的结果的高位。

al:传入一个整数,作为被除数的低位;传出相除后的结果的低位。

b:传入一个整数,作除数。

返回值:相除的余数。失败时,返回0.

J. 大数的比较

gChar gCmp(gBigInt *a, gBigInt *b);

功能:对大数a和大数b进行比较,不考虑它们的符号,只比较数值。
参数:

a:传入一个大数。

b:传入另一个大数。

返回值:-1-大数a小于大数b,0-大数a等于大数b,+1-大数a大于大数b.

gChar gCmpEx(gBigInt *a, gBigInt *b);

功能:对大数a和大数b进行比较,考虑它们的符号,整数大于负数。

参数:

a:传入一个大数。

b:传入另一个大数。

返回值:-1-大数a小于大数b,0-大数a等于大数b,+1-大数a大于大数b.

gChar gCmpInt(gBigInt *a, gUInt b);

功能:大数与整数的比较。对大数a和一般整数b进行比较,不考虑它们的符号。

参数:

a:传入一个大数。

b:传入一个一般整数。

返回值:-1-大数a小于b,0-大数a等于b,+1-大数a大于b.

K. 大数的赋值

gChar gMov(gBigInt *a, gBigInt *b);

功能:将大数b的值,赋给大数a,考虑它们的符号。

参数:

a:传出赋值的结果。

b:传入另一个大数。

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

gChar gMovInt(gBigInt *a, gUInt b);

功能:将整数b的值,赋给大数a,考虑它们的符号。

参数:

a:传出赋值的结果。

b:传入一个一般整数。

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

L. 大数的加法

gChar gAdd(gBigInt *a, gBigInt *b);//加

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

参数:

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

b:传入另一个大数。

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

gChar gAddInt(gBigInt *a, gSInt b);

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

参数:

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

b:传入一个一般整数。

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

M. 大数的减法

gChar gSub(gBigInt *a, gBigInt *b);//减

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

参数:

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

b:传入另一个大数。

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

gChar gSubInt(gBigInt *a, gSInt b);

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

参数:

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

b:传入一个一般整数。

返回值:0
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇信号究竟发给谁 下一篇数字转换成指定进制的数字字符串

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: