在RSA算法密钥产生过程中,设P=43,Q=17,取密钥D=593,求公钥
公钥为17。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
//判断公钥e是否为素数,1成立,0不成立
int prime(int e);
//判断公钥e与(p-1)*(q-1)的最大公约数是否为1,1成立,0不成立
int gcd(int e,int pq);
//判断e*d余(p-1)*(q-1)是否为1,1成立,0不成立
int mod(int e,int d,int pq);
#define SIZE 1024
void main()
{
int p;
int q;
int e;//公钥
int d;//密钥
int pq;//(p-1)*(q-1)
int* eArray=(int*)malloc(sizeof(int)*SIZE);
int i=0;
int size;
printf("请输入素数p和qn");
scanf("%d%d",&p,&q);
printf("请输入密钥dn");
scanf("%d",&d);
pq=(p-1)*(q-1);
printf("p=%dnq=%dnd=%d(p-1)*(q-1)=%dn",p,q,d,pq);
for(e=1;e<pq;e=e+2)
{
if(mod(e,d,pq)&&gcd(e,pq))
{
eArray[i]=e;
i++;
}
}
size=i;
printf("在0-%d可能的公钥数量为 %d n",pq,size);
printf("公钥为:");
for(i=0;i<size;i++)
{
if(i%5==0)
printf("n");
printf("%d ",eArray[i]);
}
printf("n");
free(eArray);
}
int mod(int e,int d,int pq)
{
int ed=e*d;
if(ed%pq==1)
return 1;
return 0;
}
int gcd(int e,int pq)
{
if(prime(e)&&pq%e!=0)
return 1;
return 0;
}
int prime(int e)
{
for(int i=2;i<=int(sqrt(e)+1);i++)
{
if(e%i==0&&e!=2)
return 0;
}
return 1;
}
2019-07-17 22:56:36 举报
相关知识
在RSA的公钥密码体制中,假设公钥为(e,n)=(13,35),则私钥d等于(
防物理攻击,芯片是如何做到的?
一种基于物联网的宠物安全监测系统的制作方法
求方程ax2+bx+c的根python,ax2+bx+c=0的根的算法
明文为P,密文为C,密钥为K,生成的密钥流为KS,若用流加密算法,( )是正确的。A.C=P ⊕KS B.C=
Windows搭建WordPress博客网站:配置SSL证书 5/5
机器学习毕业论文(毕设)方向怎么选
Yolov8入门:自定义数据集训练实战教程
英语翻译设图G有n个结点,以下算法产生的是最小生成树:a) 选取最小权边e1,置边数i=1,b) i=n
【管综教研室】假言选言联言等价定理:p→q=非p或q=非(p且非q)
网址: 在RSA算法密钥产生过程中,设P=43,Q=17,取密钥D=593,求公钥 https://www.mcbbbk.com/newsview730635.html
上一篇: 手机桌面宠物怎么做 |
下一篇: 魔力宝贝手机版宠物重点培养攻略汇 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352