电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

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

C语言课程设计(RSA加密算法)报告_第1页
1/8
C语言课程设计(RSA加密算法)报告_第2页
2/8
C语言课程设计(RSA加密算法)报告_第3页
3/8
C 语言课程设计 1 一、 设计内容 RSA 加密算法 二、 设计目的 1) 通过完成具有一定难度的题目,使自己能够将课本上的理论知识和具体问题有机地结合起来,锻炼自己分析问题、解决问题的能力,提高编程能力; 2) 通过完成一些需要查阅相关资料才能做的题目,提高自己的自学习能力和创新能力。 三、 设计思路(包括所用的函数) RSA 的公钥、私钥的组成,以及加密、解密的公式可见于下表: 主函数实现求 n 的欧拉数, 由公钥求解私钥, 加密解密选择以及相应的密文明文输出。 candp 实现加密解密时的求幂取余运算, 子函数 fun 实现 e 与 t 的互素判断,以验证 e 是否符合要求 prime 实现一个素数的判断,以验证输入的数是否为素数 四、 程序代码 #include #include void main() { int candp(int a,int b,int c);//函数声明 int fun(int x,int y);//函数声明 2 int prime(int m);//函数声明 int p; int q; int e; int d; int m; int n; int t; int c; int r; printf("请输入两个素数p,q: "); scanf("%d,%d",&p,&q); for(;p>0,q>0;)//for 循环判断 p 和 q 是否同时为素数 { if(prime(p)&&prime(q)) { break; } else printf("输入有误,请重新输入:"); scanf("%d,%d",&p,&q); } 3 n=p*q; printf("计算得n 为%d\n",n); t=(p-1)*(q-1); //求n 的欧拉数 printf("计算得t 为%d\n",t); printf("请输入一个与 t 互素的数,即公钥 e: "); scanf("%d",&e); for(;e>1,e=t||fun(e,t)) { printf("e 不合要求,请重新输入: "); //e<1 或 e>t 或 e 与 t 不互素时,重新输入 scanf("%d",&e); } else break; } d=1; while(((e*d)%t)!=1) d++; //由公钥 e 求出私钥 d printf("经计算d 为%d\n",d); printf("加密请输入1\n"); //加密或解密选择 4 printf("解密请输入2\n"); scanf("%d",&r); switch(r) { case 1: printf("请输入明文m: "); //输入要加密的明文数字 scanf("%d",&m); c=candp(m,e,n); printf("密文为%d\n",c);break; case 2: printf("请输入密文c: "); //输入要解密的密文数字 scanf("%d",&c); m=candp(c,d,n); printf("明文为%d\n",m);break; } } int candp(int a,int b,int c) //数据处理函数,实现幂的取余运算 { int z; z=1; b=b+1;...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

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

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部