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,
// 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