#include <stdio.h>
int candp(int a,int b,int c) //数据处理函数,实现幂的取余运算
{ int r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
printf("%d\n",r);
return r;
}
int fun(int x,int y) //公钥e 与t 的互素判断
{
int t;
while(y)
{
t=x;
x=y;
y=t%y;
}
if(x == 1)
return 0; //x 与y 互素时返回0
else
return 1; //x 与y 不互素时返回1
}
void main()
{
int p,q,e,d,m,n,t,c,r;
printf("请输入两个素数p,q: ");
scanf("%d%d",&p,&q);
n=p*q;
printf("计算得n 为%3d\n",n);
t=(p-1)*(q-1); //求n 的欧拉数
printf("计算得t 为%3d\n",t);
printf("请输入公钥e: ");
scanf("%d",&e);
if(e<1||e>t||fun(e,t))
{
printf("e 不合要求,请重新输入: "); //e<1 或e>t 或e 与t 不互素时,重新输入
scanf("%d",&e);
}
d=1;
while(((e*d)%t)!=1) d++; //由公钥e 求出私钥d
printf("经计算d 为%d\n",d);
printf("加密请输入1\n"); //加密或解密选择
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;
}
}
RSA.rar_rsa
版权申诉
114 浏览量
2022-09-22
21:43:53
上传
评论
收藏 162KB RAR 举报
JonSco
- 粉丝: 72
- 资源: 1万+
最新资源
- 基于matlab实现字符识别的参考程序,用所用的字体识别率挺高,部分手写的也能识别,但是还不能识别扭曲和倾斜的字符 .rar
- 基于matlab实现指纹识别系统 包括数据库导入、图像选择识别、帮助功能、识别图像可视、gabor滤波可视,实现界面操作.rar
- 基于matlab实现指纹识别,利用gabor滤波器,提取指纹特征,只能呢读取bmp图像.rar
- 基于matlab实现于数字图像相关方法中散斑质量评价
- 基于matlab实现遗传算法和佳点集遗传算法的基本思想和不同点,用遗传算法测试一标准函数 佳点集算法测试一标准函数
- tensorflow-gpu-2.5.1-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-gpu-2.5.0-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-gpu-2.5.2-cp39-cp39-manylinux2010-x86-64.whl
- 内含方正小标宋简体、仿宋-Gb2312、黑体、楷体、宋体,五个公文常用字体
- 记忆卡牌游戏源码及可运行文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈