带有C的1024位RSA算法

时间:2013-04-27 17:17:24

标签: c rsa

我正在开发一个使用 C 语言的小项目,这是一个RSA文本加密。

代码有效,但问题是如果我选择一个大密钥它不起作用。 我认为问题是由于模块化算法,但我找不到解决方案。

有两个函数的代码:

ENCRYPT

     unsigned int crypt( unsigned int mchiff, unsigned int n,unsigned int e)
{
      unsigned int i;
      double cc=1;   
      printf("\n\n\n");
        for(i=0;i<e;i++)
    {
       cc=cc*mchiff;
       printf(" : %g :    ",cc);
       cc=fmod(cc,n);
       printf(" < %g > \n",cc);
    }
      printf("\n\n\n");
      return cc;
}

DECRYPT

unsigned long int decrypt(long cc,int n,int d)
{
      int i;
      unsigned long int cd=1;
        for(i=0;i<d;i++)   /* the main problem is here if the d is apprx equal to 2^1024 */
    {
       cd=cd*cc;
       cd=cd%n;
    }
      return cd;
}

1 个答案:

答案 0 :(得分:0)

int限制为32位(通常)。您需要一个可以容纳1024位或更多位的类型。您应该使用GNU MP之类的外部库。

如果您没有尝试了解RSA并且只是尝试使用,我只需要使用现有的实现来为您省去麻烦。 OpenSSL拥有一切。