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