Bonjour, j'étudie le C en cours depuis un mois (à raison de 2h par semaine, c'est à dire, trop peu je pense ! ), et j'ai un programme à faire qui réalise un cryptage RSA, puis un décryptage, ceci n'est pas le réel problème. En fait, mon programme tourne (pour le moment je n'ai fait que le cryptage) sauf sur un point, et l'un des plus important, quand il doit faire x^b mod n, avec de gros nombres, par exemple pour l'exposant, on s'attend à ce que cela pose problème, j'ai donc fait une fonction utilisant l'algorithme des carrés et des multiplications pour ne pas être géné sur ce point, et pourtant elle ne fonctionne pas avec de trop gros nombres (J'ai essayé avec 16^32 mod 77, aucun problème, par contre avec 25199^28549 mod 94631, le programme n'affiche pas le bon résultat, et même un nombre négatif : -43965 ! J'ai tout d'abord pensé que le problème venait de la taille de mes variables, des int, mais je ne peux pas utiliser de modulo sur autre chose que des entiers, apparement, donc je ne vois pas comment résoudre ce problème si c'est ça. voici ici ma fonction :
int puis(int x, int y, int z)
{
int res = 1;
while (y > 0)
{
if (y%2==1)
{
res = ((res*x)%z);
y = y - 1;
}
else
{
x = ((x*x)%z);
y = y/2;
}
}
return(res);
}
Je pourrais poster le programme entier si nécessaire.
Merci de votre lecture, et des réponses que vous pourrez m'apporter.
Shuu