Bonjour, je vous expose mon probleme :
J'ai cree un systeme de cryptage RSA, il ne me reste plus qu'a trouver des cles. Je parviens a trouver N, phi(N) et E mais le calcul de D me pose probleme. En effet il m'arrive de trouver un D negatif ou qui genere des nombre negatif apres le criptage.
Le probleme ne vient pas du criptage, il fonctionne avec des cles toutes faites comme N = 851 ; E = 17 ; D = 233.
Voici mon code php bien documente :Voila, une erreur se cache dans ce code (lol). Je me demande si je fais bien d'initialiser $u[$i] a 1 ...Code://On "descent" l'egalite Eu_1 + phi(N)v_1 = 1 grace a l'algorithme d'euclide. (PGCD) //On initialise les variables. $reste[0] = 1; // on initialise $reste[0] != 0. $reste1[1] = $phiN; $reste2[1] = $e; $i = 1; //On initialise $i a 1 pour eviter dans la condition du while $reste[-1]. On corrige cette erreur plutard. while ($reste[$i-1] != 0) // tant que $reste[$i-1] non nul ... { //faire ... $reste[$i] = $reste1[$i] % $reste2[$i]; // $reste[$i] = reste de la division euclidienne $reste1[$i]/$reste2[$i] $reste1[$i+1] = $reste2[$i]; // On fait passer les valeur d'une variable a l'autre (PGCD) $reste2[$i+1] = $reste[$i]; // idem $reste[$i+1] = 1; // peu util ... $i++; // on increment $i de 1 } // fin de la boucle while $i = $i - 2; //On corrige l'erreur precedente mais on en commet une autre pour pouvoir remonter. //On "remonte" (methode inconnue) $u[$i] = 1; $v[$i] = 1; while ($i > 0) // tant que $i positif ... { // faire ... $i--; // on decremente $i $u[$i] = $v[$i+1]; $v[$i] = $u[$i+1] - (($reste1[$i+1]-$reste[$i+1])/$reste2[$i+1]) * $v[$i+1]; } echo "D = " . $v[0];
Qu'en pensez vous ?
-----