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: