2013-04-27 66 views
2

我正在與一個小項目工作C語言,這是一個RSA文本加密。一個1024位RSA算法與C

該代碼的作品,但問題是,它不工作,如果我選擇一個大的關鍵。 我認爲這個問題是由於模運算,但我找不到解決方案。

有的2個功能的代碼:

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

我可以建議你讓你的代碼(和你的變量)更具描述性嗎? – Overflowh 2013-04-27 17:24:11

回答

0

int被限制爲32位(通常)。你想要一個可以容納1024位或更多的類型。您應該使用外部庫,如GNU MP

如果您不想了解RSA並試圖使用,那麼我只需要使用現有的實現來爲您節省麻煩。 OpenSSL擁有一切。

+1

對。你需要非常小心地選擇填充算法等等(只是模塊化算法不足以使RSA安全),而現有的實現爲你提供了棘手的選擇。 – 2013-04-27 17:27:48