我正在开发一个使用 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;
}