RSA算法原程序及详细注释

RSA算法原程序及详细注释

ID:41783526

大小:50.61 KB

页数:14页

时间:2019-09-02

RSA算法原程序及详细注释_第1页
RSA算法原程序及详细注释_第2页
RSA算法原程序及详细注释_第3页
RSA算法原程序及详细注释_第4页
RSA算法原程序及详细注释_第5页
资源描述:

《RSA算法原程序及详细注释》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、RSA算法程序一、RSA算法在此作业具体实现的过程介绍:1.RSA算法流程如下:(1)密钥生成算法流程:1)随机地选择两个人素数P和q(需保密);2)计算乘积n=pXq;3)计算欧拉函数z=(p(n)=(p-l)(q-l)o其数值等于小于n并且与n互质的整数的个数。4)选择-一个随机数e,使e与z互质,且l

2、然后对每个明文块M依次进行加、解密:①加密:使用公钥e和加密密文m,即C=Memodn;②解密:使用私钥d将密文c解密,获得明文m,即肛modn。2•具体的数据结构与算法:(1)存储人整数的数据结构:tvpedefstruct.{intlength;unsignedintn[MAX];}Lint;这里大整数川65536进制表示并使川结构体Lint存储大幣数。Lint由-个幣盘变量length和一个无符号整型数组nlMAXJ构成,length存储人整数的位数,n[MAX]貝体存储每一位的值。(2)具

3、体的算法:具体的算法主耍参考了此书:赵振江等译.《密码编码学——加密方法的C与C十十实现(第二版)》.北京:电子工业出版社,2003具体的算法包括:基于上述数据结构的人整数的加、减、乘、除、模邪运算,求逆元运算,以及人素数的判定等。这些算法的具体内容都在原程序与其注释中。源程序此程序的开发环境是MicrosoftVisualStudio2005,工程类型为Win32控制台应用程序。#includeMstdafx.hH#inelude#include#inclu

4、de#include#defineMAX200#defineGREAT1#defineEQUAL0#defineLOW-1#definePL33/定义人整数的最人位数.200完全可以满足p与q达到768bit位的要求,可以选择更大的数。〃定义大整数比较时的返冋值〃如杲重新生成p与q,贝"PL定义了p与q的最大位数。这里定义为33保证p与q达到512bil长度。typedefstruct{intlength;unsignedintn[MAXJ;)Lint;Lint

5、ZERO,ONE,TWO;〃定义常用人整数0、1、2。//Init.Lint函数功能:初始化大整数。首先清零,然后把前n位设置为valueintInit_Lint(Lint*a,intn,unsignedintvalue){inti;if(a==NULL)return(0);else{a->length=0;for(i=0;in[i]=0;for(i=0:ivn:i++)a->n[i]=value;a->length=n;return(I);))//Set_Lintl^i数

6、功能:把人整数a的第n位设置为valuevoidSet_Lint(Lint*a,intn.unsignedintvalue)(if(a->lcngthlength=n;a->n[n-l]=value;)//Cpy_Lint函数功能:把人幣数a复制给bintCpy_Lint(Lint*a,Lint*b){inti;if(a==NULLIIb==NULL)return0;if(b->length=0){Init_Lint(a,0,0);returnI;}for(i=0;i

7、a->n[il=b->nfil;a->lcngth=b->Icngth;returnI;)//Split_Lint^i数功能:提取大整数b从nl开始的n2位的数据纽成大整数aintSplit_Lint(Lint*a,Lint*bjntnl,intn2){inti;if(n1<1Iln2>b->lcngth)return0;for(i=nl-l;in[i-nl+ll=b->n[i];a->length=n2-n1+1;return1;)//Cmp_Lint函数功能:比较两个人整

8、数的人小,若8>1)返冋1,若a=b返冋0,若avb返冋-1intCmp_Lint(Linta,Lintb)inti;i=a」ength;while(I)if((a.n[i-ll==0)&&(a.length>1))a」ength-=l;elsebleak;i-;)i二b」ength;while(l){if((b.n[i-l]==O)&&(b.length>l))b」ength・=1:elsebreak;i-;}if(a.length>b」ength)returnGREAT;if(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。