开发者社区> 问答> 正文

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

求~具体程序

展开
收起
知与谁同 2018-07-15 09:39:52 2988 0
2 条回答
写回答
取消 提交回答
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    http://www.example-code.com/vcpp/rsa_generateKey.asp这里应该有您要的东西,希望能帮助到您
    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;
    }
    2019-07-17 22:56:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载