RSA算法流程图zl031125.docx

上传人:b****1 文档编号:14786638 上传时间:2023-06-27 格式:DOCX 页数:19 大小:646.97KB
下载 相关 举报
RSA算法流程图zl031125.docx_第1页
第1页 / 共19页
RSA算法流程图zl031125.docx_第2页
第2页 / 共19页
RSA算法流程图zl031125.docx_第3页
第3页 / 共19页
RSA算法流程图zl031125.docx_第4页
第4页 / 共19页
RSA算法流程图zl031125.docx_第5页
第5页 / 共19页
RSA算法流程图zl031125.docx_第6页
第6页 / 共19页
RSA算法流程图zl031125.docx_第7页
第7页 / 共19页
RSA算法流程图zl031125.docx_第8页
第8页 / 共19页
RSA算法流程图zl031125.docx_第9页
第9页 / 共19页
RSA算法流程图zl031125.docx_第10页
第10页 / 共19页
RSA算法流程图zl031125.docx_第11页
第11页 / 共19页
RSA算法流程图zl031125.docx_第12页
第12页 / 共19页
RSA算法流程图zl031125.docx_第13页
第13页 / 共19页
RSA算法流程图zl031125.docx_第14页
第14页 / 共19页
RSA算法流程图zl031125.docx_第15页
第15页 / 共19页
RSA算法流程图zl031125.docx_第16页
第16页 / 共19页
RSA算法流程图zl031125.docx_第17页
第17页 / 共19页
RSA算法流程图zl031125.docx_第18页
第18页 / 共19页
RSA算法流程图zl031125.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

RSA算法流程图zl031125.docx

《RSA算法流程图zl031125.docx》由会员分享,可在线阅读,更多相关《RSA算法流程图zl031125.docx(19页珍藏版)》请在冰点文库上搜索。

RSA算法流程图zl031125.docx

RSA算法流程图zl031125

流程图中用到的符号说明如下:

m未加密的原始数据(明文)

c加密后数据(密文)

e随机选取的加密密钥,与(p-1)(q-1)互素。

(p、q是两个大素数)

nn=p*q

dPp的指数

dQq的指数

qInv系数数据

流程图引用到源程序中的类型定义如下:

typedefunsignedlongintUINT4;

typedefunsignedshortintUINT2;

typedefUINT4NN_DIGIT;

typedefUINT2NN_HALF_DIGIT;

typedefstruct{

unsignedintbits;/*lengthinbitsofmodulus*/

unsignedcharmodulus[MAX_RSA_MODULUS_LEN];/*modulus*/

unsignedcharexponent[MAX_RSA_MODULUS_LEN];/*publicexponent*/

}R_RSA_PUBLIC_KEY;//公钥

typedefstruct{

unsignedintbits;/*lengthinbitsofmodulus*/

unsignedcharmodulus[MAX_RSA_MODULUS_LEN];/*modulus*/

unsignedcharpublicExponent[MAX_RSA_MODULUS_LEN];/*publicexponent*/

unsignedcharexponent[MAX_RSA_MODULUS_LEN];/*privateexponent*/

unsignedcharprime[2][MAX_RSA_PRIME_LEN];/*primefactors*/

unsignedcharprimeExponent[2][MAX_RSA_PRIME_LEN];/*exponentsforCRT*/

unsignedcharcoefficient[MAX_RSA_PRIME_LEN];/*CRTcoefficient*/

}R_RSA_PRIVATE_KEY;//私钥

引用到的宏定义说明如下:

#defineNN_DIGIT_BITS32

#defineNN_HALF_DIGIT_BITS16

#defineNN_DIGIT_LEN(NN_DIGIT_BITS/8)

#defineMAX_NN_DIGITS\

((MAX_RSA_MODULUS_LEN+NN_DIGIT_LEN-1)/NN_DIGIT_LEN+1)

#defineMAX_NN_DIGIT0xffffffff

#defineMAX_NN_HALF_DIGIT0xffff

#defineMAX_RSA_MODULUS_BITS2048

#defineMAX_RSA_MODULUS_LEN((MAX_RSA_MODULUS_BITS+7)/8)

RSA公钥加密算法流程图:

RSA私钥解密算法流程图:

赋值算法流程图:

/*

Assignsa=b.

Lengths:

a[digits],b[digits].

*/

函数名:

voidNN_Assign(NN_DIGIT*a,NN_DIGIT*b,unsignedintdigits)

赋0值算法流程图:

/*

Assignsa=0.

Lengths:

a[digits].

*/

函数名:

voidNN_AssignZero(NN_DIGIT*a,unsignedintdigits)

返回数组有效长度的算法流程图:

/*

Lengths:

a[digits].

*/

函数名:

unsignedintNN_Digits(NN_DIGIT*a,unsignedintdigits)

计算两个阿拉伯数字相乘的算法流程图:

/*

Computesa=b*c,wherebandcaredigits.

Lengths:

a[2].

*/

函数名:

voidNN_DigitMult(NN_DIGITa[2],NN_DIGITb,NN_DIGITc)

C

C

B

B

——————————

C

B

C

B

C

B

C

B

———————————

C

XYB

计算a=b+c*d的算法流程图:

/*

Computesa=b+c*d,wherecisadigit.Returnscarry.

Lengths:

a[digits],b[digits],d[digits].

*/

函数名:

staticNN_DIGITNN_AddDigitMult(NN_DIGIT*a,NN_DIGIT*b,NN_DIGITc,NN_DIGIT*d,unsignedintdigits)

计算a=b*c的算法流程图:

/*

Computesa=b*c.

Lengths:

a[2*digits],b[digits],c[digits].

Assumesdigits

*/

函数名:

voidNN_Mult(NN_DIGIT*a,NN_DIGIT*b,NN_DIGIT*c,unsignedintdigits)

计算a=b*2^c的算法流程图:

/*

Computesa=b*2^c(i.e.,shiftsleftcbits),returningcarry.

Lengths:

a[digits],b[digits].

Requiresc

*/

函数名:

NN_DIGITNN_LShift(NN_DIGIT*a,NN_DIGIT*b,unsignedintc,unsignedintdigits)

返回NN_DIGIT类型变量有效位数的算法流程图:

函数名:

staticunsignedintNN_DigitBits(NN_DIGITa)

计算a=b/c的算法流程图:

/*

Setsa=b/c,whereaandcaredigits.

Lengths:

b[2].

Assumesb[1]0.Forefficiency,cshouldbe

normalized.

*/

函数名:

voidNN_DigitDiv(NN_DIGIT*a,NN_DIGITb[2],NN_DIGITc)

C

C

A

A

——————————

C

A

C

A

C

A

C

A

———————————

C

XYA

计算a=b-c*d的算法流程图:

/*

Computesa=b-c*d,wherecisadigit.Returnsborrow.

Lengths:

a[digits],b[digits],d[digits].

*/

函数名:

staticNN_DIGITNN_SubDigitMult(NN_DIGIT*a,NN_DIGIT*b,NN_DIGITc,NN_DIGIT*d,unsignedintdigits)

比较两个NN_DIGIT类型数组的算法流程图:

/*

Returnssignofa-b.

Lengths:

a[digits],b[digits].

*/

函数名:

intNN_Cmp(NN_DIGIT*a,NN_DIGIT*b,unsignedintdigits)

计算a=b–c的算法流程图:

/*

Computesa=b-c.Returnsborrow.

Lengths:

a[digits],b[digits],c[digits].

*/

函数名:

NN_DIGITNN_Sub(NN_DIGIT*a,NN_DIGIT*b,NN_DIGIT*c,unsignedintdigits)

计算a=cdiv2^c的算法流程图:

/*

Computesa=cdiv2^c(i.e.,shiftsrightcbits),returningcarry.

Lengths:

a[digits],b[digits].

Requires:

c

*/

函数名:

NN_DIGITNN_RShift(NN_DIGIT*a,NN_DIGIT*b,unsignedintc,unsignedintdigits)

计算a=cdivdandb=cmodd的算法流程图:

/*

Computesa=cdivdandb=cmodd.

Lengths:

a[cDigits],b[dDigits],c[cDigits],d[dDigits].

Assumesd>0,cDigits<2*MAX_NN_DIGITS,

dDigits

*/

函数名:

voidNN_Div(a,b,c,cDigits,d,dDigits)

计算a=bmodc的算法流程图:

/*

Computesa=bmodc.

Lengths:

a[cDigits],b[bDigits],c[cDigits].

Assumesc>0,bDigits<2*MAX_NN_DIGITS,cDigits

*/

函数名:

voidNN_Mod(NN_DIGIT*a,NN_DIGIT*b,unsignedintbDigits,NN_DIGIT*c,unsignedintcDigits)

计算a=b*cmodd的算法流程图:

/*

Computesa=b*cmodd.

Lengths:

a[digits],b[digits],c[digits],d[digits].

Assumesd>0,digits

*/

函数名:

voidNN_ModMult(NN_DIGIT*a,NN_DIGIT*b,NN_DIGIT*c,NN_DIGIT*d,unsignedintdigits)

计算a=b^cmodd的算法流程图:

/*

Computesa=b^cmodd.

Lengths:

a[dDigits],b[dDigits],c[cDigits],d[dDigits].

Assumesd>0,cDigits>0,dDigits

*/

函数名:

voidNN_ModExp(NN_DIGIT*a,NN_DIGIT*b,NN_DIGIT*c,unsignedintcDigits,NN_DIGIT*d,unsignedintdDigits)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2