资源描述:
《流程图中用到的符号说明如下:》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、流程图中用到的符号说明如下:m未加密的原始数据(明文)c加密后数据(密文)e随机选取的加密密钥,与(p-1)(q-1)互素。(p、q是两个大素数)nn=p*qdPp的指数dQq的指数qInv系数数据流程图引用到源程序中的类型定义如下:typedefunsignedlongintUINT4;typedefunsignedshortintUINT2;typedefUINT4NN_DIGIT;typedefUINT2NN_HALF_DIGIT;typedefstruct{unsignedintbits;/*len
2、gthinbitsofmodulus*/unsignedcharmodulus[MAX_RSA_MODULUS_LEN];/*modulus*/unsignedcharexponent[MAX_RSA_MODULUS_LEN];/*publicexponent*/}R_RSA_PUBLIC_KEY;//公钥typedefstruct{unsignedintbits;/*lengthinbitsofmodulus*/unsignedcharmodulus[MAX_RSA_MODULUS_LEN];/*modu
3、lus*/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*/u
4、nsignedcharcoefficient[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)#d
5、efineMAX_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
6、*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,wherebandcaredigi
7、ts.Lengths:a[2].*/函数名:voidNN_DigitMult(NN_DIGITa[2],NN_DIGITb,NN_DIGITc)CCBB——————————CBCBCBCB———————————CXYB计算a=b+c*d的算法流程图:/*Computesa=b+c*d,wherecisadigit.Returnscarry.Lengths:a[digits],b[digits],d[digits].*/函数名:staticNN_DIGITNN_AddDigitMult(NN_DIGIT*a,
8、NN_DIGIT*b,NN_DIGITc,NN_DIGIT*d,unsignedintdigits)计算a=b*c的算法流程图:/*Computesa=b*c.Lengths:a[2*digits],b[digits],c[digits].Assumesdigits