• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: RSA  数字签名  

资源简介

RSA数字签名源程序,可直接使用,调试方法请看readme文件。适合课程实验所用。

资源截图

代码片段和文件信息

#include
int egcd(int aint b)
{
    if(b<0) b=b%a+a;
    int c=0;
    int d=1;
    int q=a/b;
    int r=a%b;
    int temp;
    int mod=a;
    while(r!=0)
    {
              temp=(c-q*d)%mod;
              c=d;
              d=temp;
              a=b;
              b=r;
              q=a/b;
              r=a%b;         
    }
    return (d<0)?(d+mod):d;
}
int main()
{
    int depqngn;/*ne是公钥,pq保密d是私钥*/
    int m;/*m是要进行签名的明文*/
    printf(“请输入素数p=“ );
    scanf(“%d“&p);
    printf(“请输入素数q=“ );
    scanf(“%d“&q);
    n=p*q;
    gn=(p-1)*(q-1);
    printf(“取e=“ );
    scanf(“%d“&e);
    d=egcd(gne);
    long sigm=1;/*sigx表示签名对应的y值*/
    printf(“输入明文m=“ );
    scanf(“%d“&m);
    for(int i=1;i<=d;i++) sigm=(sigm*m)%n;
    printf(“通过对明文进行签名得到sigk(m)=%d\n“sigm);
    /*验证签名是否合法*/
    int ct;
    printf(“请输入要进行合法性验证的RSA签名:\n“);
     printf(“s=“ );
     scanf(“%d“&c);
     printf(“m=“ ); 
     scanf(“%d“&t);
    int verxy=1;
    for(i=1;i<=d;i++) verxy=(verxy*t)%n;
    printf(“%d\n“verxy);
    if(verxy==c)
    { 
      printf(“(%d%d)是合法的RSA签名\n“ct);
    }
    else
    { 
      printf(“(%d%d)不是合法的RSA签名\n“ct); 
    }
    getchar();
    getchar();
    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        270  2012-04-23 23:18  RSA数字签名源程序\readme.txt

     文件       1351  2012-04-23 21:21  RSA数字签名源程序\rsa数字签名.cpp

     目录          0  2012-04-23 23:18  RSA数字签名源程序

----------- ---------  ---------- -----  ----

                 1621                    3


评论

共有 条评论