开发者社区> 问答> 正文

如何用C语言程序实现RSA算法?

知与谁同 2018-07-15 09:39:52 369
求~具体程序
算法 C语言
分享到
取消 提交回答
全部回答(2)
  • 聚小编
    2019-07-17 22:56:18
    http://www.example-code.com/vcpp/rsa_generateKey.asp这里应该有您要的东西,希望能帮助到您
    0 0
  • 云篆
    2019-07-17 22:56:18
    #include "stdafx.h"
    #include<math.h>
    #include<stdio.h>
    int isP(int m)
    {
    int i;
    for(i=2;i<m;i++)
    if(m % i==0)return 0;
    return 1;
    }
    int num(int m,int k)
    {
    int i=0;
    for(m=m;k>0;m++)
    if(isP(m))
    {
    k--;
    return m;
    }
    }
    int main(int argc, char* argv[])
    {
    int P,Q,E,D,i,k,fn,c=0,j=0,t=1,f1=1,l=2;
    int a[10];
    long N0,N1;
    long PT,CT,N;
    printf("请输入第一个数:");
    scanf("%d",&P);
    P=num(P,1);
    printf("请输入比第一次大的数:");
    scanf("%d",&Q);
    Q=num(Q,1);
    N=P*Q;
    N1=(P-1)*(Q-1);
    N0=N1;
    while(N1>=3)
    {

    while(N1%l!=0)
    {
    l++;
    }
    a[j++]=l;
    N1=N1/l;

    }
    printf("请输入一个奇数E,若E不合适,系统将会找一个比E大的合适值:");
    scanf("%d",&E);
    for(i=E;t>0;i=i+2)
    {
    for(k=0;k<j+1;k++)
    {
    if(E%a[k-1]==0) break;
    else if(k==j)
    {
    t--;
    }
    E=i;
    }
    }
    for(k=1; ;k++)
    {
    if((N0*k+1)%E==0)
    {
    D=(N0*k+1)/E;
    if((D*E)%N0==1)
    break;
    }

    }
    printf("请输入明文:");
    scanf("%ld",&PT);
    for(i=1;i<=E;i++)
    {
    fn=(f1*PT)%N;
    f1=fn;
    CT=fn;
    }
    f1=1;
    for(i=1;i<=D;i++)
    {
    fn=(f1*CT)%N;
    f1=fn;
    PT=fn;
    }
    printf("P=%d,Q=%d\n",P,Q);
    for(k=0;k<j;k++)
    printf("%d ",a[k]);
    printf("\n");
    printf("E=%d,D=%d,N=%ld\n",E,D,N);
    printf("密码是:%ld\n",CT);
    printf("明文是:%ld\n",PT);
    return 0;
    }
    0 0
添加回答
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

推荐文章
相似问题