首页 分享 在RSA算法密钥产生过程中,设P=43,Q=17,取密钥D=593,求公钥

在RSA算法密钥产生过程中,设P=43,Q=17,取密钥D=593,求公钥

来源:萌宠菠菠乐园 时间:2024-12-14 10:20

  公钥为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

所属分类:萌宠日常
上一篇: 手机桌面宠物怎么做
下一篇: 魔力宝贝手机版宠物重点培养攻略汇

推荐分享