使用 C 的 1024 位 RSA 算法

问题描述 投票:0回答:2

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

代码可以工作,但问题是如果我选择一个大密钥,它就不起作用。 我认为问题是由于模运算引起的,但我找不到解决方案。

有2个函数的代码:

加密

     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;
}

解密

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;
}
c rsa
2个回答
1
投票

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

如果您不是想了解 RSA 而只是想使用,我会使用现有的实现来省去您的麻烦。 OpenSSL 拥有一切。


0
投票

如果 unsigned long long int 是一个东西,那就用它吧哈哈 我知道那些 c=m^e mod n 所有那些需要破解的 你懂的 你知道e 你加密了,你知道的 你知道结果c 你可以在不知道 p 和 q 的情况下计算 d 数学很简单 1+1=2 所以 2-1=1 我知道因为我做到了。 RSA 在...小时内破解了 4096 位 密钥不正确,但可以解密哈哈

© www.soinside.com 2019 - 2024. All rights reserved.