C语言课程设计(RSA加密算法)报告.doc

C语言课程设计(RSA加密算法)报告.doc

ID:57687345

大小:75.00 KB

页数:8页

时间:2020-09-01

C语言课程设计(RSA加密算法)报告.doc_第1页
C语言课程设计(RSA加密算法)报告.doc_第2页
C语言课程设计(RSA加密算法)报告.doc_第3页
C语言课程设计(RSA加密算法)报告.doc_第4页
C语言课程设计(RSA加密算法)报告.doc_第5页
资源描述:

《C语言课程设计(RSA加密算法)报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言课程设计一、设计内容RSA加密算法二、设计目的1)通过完成具有一定难度的题目,使自己能够将课本上的理论知识和具体问题有机地结合起来,锻炼自己分析问题、解决问题的能力,提高编程能力;2)通过完成一些需要查阅相关资料才能做的题目,提高自己的自学习能力和创新能力。三、设计思路(包括所用的函数)RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:主函数实现求n的欧拉数,由公钥求解私钥,加密解密选择以及相应的密文明文输出。candp实现加密解密时的求幂取余运算,子函数fun实现e与t的互素判断,以验证e是否符合要求prim

2、e实现一个素数的判断,以验证输入的数是否为素数四、程序代码#include#includevoidmain(){intcandp(inta,intb,intc);//函数声明intfun(intx,inty);//函数声明intprime(intm);//函数声明intp;intq;inte;intd;intm;intn;intt;intc;intr;printf("请输入两个素数p,q:");scanf("%d,%d",&p,&q);for(;p>0,q>0;)//for循环判断p和q是否

3、同时为素数{if(prime(p)&&prime(q)){break;}elseprintf("输入有误,请重新输入:");scanf("%d,%d",&p,&q);}n=p*q;printf("计算得n为%d",n);t=(p-1)*(q-1);//求n的欧拉数printf("计算得t为%d",t);printf("请输入一个与t互素的数,即公钥e:");scanf("%d",&e);for(;e>1,e

4、

5、e>=t

6、

7、fun(e,t)){printf("e不合要求,请重新输入:");//e

8、<1或e>t或e与t不互素时,重新输入scanf("%d",&e);}elsebreak;}d=1;while(((e*d)%t)!=1)d++;//由公钥e求出私钥dprintf("经计算d为%d",d);printf("加密请输入1");//加密或解密选择printf("解密请输入2");scanf("%d",&r);switch(r){case1:printf("请输入明文m:");//输入要加密的明文数字scanf("%d",&m);c=candp(m,e,n);printf("密文为%d",c);b

9、reak;case2:printf("请输入密文c:");//输入要解密的密文数字scanf("%d",&c);m=candp(c,d,n);printf("明文为%d",m);break;}}intcandp(inta,intb,intc)//数据处理函数,实现幂的取余运算{intz;z=1;b=b+1;while(b!=1){z=z*a;z=z%c;b--;}printf("%d",z);returnz;}intfun(intx,inty)//公钥e与t的互素判断{ints;while(y){s=x;x=y;y=

10、s%y;}if(x==1)return0;//x与y互素时返回0elsereturn1;//x与y不互素时返回1}intprime(intm)//判断一个数是否为素数{inti;intn;if(m==1)return0;n=(int)sqrt(m);for(i=2;i<=n;i++)if(m%i==0)return0;elsereturn1;}一、运行结果当P=43,q=59时,对134进行加密,运行结果如下:一、分析与讨论从对RSA算法的一无所知到现在运行处的结果,中间经过查询各种资料,我们的努力还是有收获的,运行结果基本

11、上还令人满意。总的来说,这次的课程设计锻炼了我们分析问题、解决问题的能力,有助于提高自己的自学习能力和创新能力。

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

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

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