Ajouter un commentaire

profsagot
RSA : problème déchiffrement

Bonjour,

je suis en train de réaliser en C une application qui chiffre et déchiffre en RSA (avec de petites clés).

Je me base sur les fonctions de chiffrement/déchiffrement standards, et j'utilise l'exponentiation modulaire pour le calcul.
Je vérifie les résultats produits avec CrypTool.

Si dans un sens =>chiffrement ça fonctionne à merveille, dans l'autre, j'obtiens soit 1 (je boucle une fois de moins), soit des nombres énormes (je boucle le bon nombre de fois) plutôt que des entiers compris entre 0 et 255 comme prévu.
Pourtant, à priori, le code pour le chiffrement et le déchiffrement est exactement le même...

Voici la portion de code envisagée:
cmessage[] contient les données chiffrées,
message[] contient les données déchiffrées,
cm[] et m[] sont destinés à contenir le chiffrement de message[] et le déchiffrement de cmessage[] respectivement,

// Albuquerque
long long cmessage[20]={912673,1331000,1061208,32768,1771561,1000000,1442897,1030301,1061208,1259712,1771561,1685159,1157625,912673,1643032,1560896,1815848,1259712,32768,912673};
long long message[20]={97,110,102,32,121,100,113,101,102,108,121,119,105,97,118,116,122,108,32,97};
long long cm[20]={0};
long long m[20]={0};

// Chiffrement de message => identique à cmessage donc OK
int tempe=0;
for(i=0;i<20;i++)
{
cm[i]=1;
for(tempe=0;tempe<e;tempe++)
{
cm[i]=(message[i]*cm[i])%n;
}
printf("%lld ",cm[i]);
}
printf("\n");

// Déchiffrement de cmessage => ICI SE SITUE MON PROBLEME... chaque printf renvoie 1; si je boucle un tour de moins, j'obtiens un nombre énorme
int tempd=0;
for(i=0;i<20;i++)
{
m[i]=1;
for(tempd=0;tempd<d;tempd++)
{
m[i]=(cmessage[i]*m[i])%n;
}
printf("%\n\t%lld\n",m[i]);system("PAUSE");
}

Merci d'avance pour vos lumières,
P.

Configuration: Windows Vista
Firefox 3.5.5

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 V     V   AA   TTTTTT  FFFF  DDD  
V V A A TT F D D
V V AAAA TT FFF D D
V V A A TT F D D
V A A TT F DDD