Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 05-12-2011 19:03:24
- allopopo
- Membre
- Inscription : 05-12-2011
- Messages : 1
Addition de points sur les courbes elliptiques (co. jacobienne)
Bonsoir,
Je suis entrain d'écrire un petit projet de crytographie sur les courbes elliptiques en C.
Le programme marche très bien si j'utilise le système de coordonnées affines dans lequel chaque point sur la courbe est représenté par 2 coordonnées [tex](x,y)[/tex].
Maintenant je compte remplacer les coordonnées affines par les coordonnées jacobiennes. c'est-à-dire que chaque point est représenté par 3 coordonnées [tex](X,Y,Z)[/tex].
J'aimerais savoir comment transformer des coordonnées affines aux coordonnées jacobiennes ? Je sais qu'il faut utiliser les formules ci-dessous :
[tex]x = \frac{X}{Z^{2}}, y = \frac{Y}{Z^{3}}[/tex]
Mais je ne sais pas comment gérer la coordonnée [tex]Z[/tex].
Pour l'instant dans mon programme, j'utilise une solution que j'ai trouvé dans un papier : lorsque l'on transforme les coordonnées affines d'un point aux coordonnées jacobiennes, la coordonnée [tex]Z[/tex] est toujours égale à 1 :
[tex](x,y) \longrightarrow (x,y,1)[/tex]
Mais je ne suis pas sûr si c'est correct.
Et pour additionner 2 points sur la courbe [tex]P(X_{1},Y_{1},Z_{1}) + Q(X_{2},Y_{2},Z_{2})=R(X_{3},Y_{3},Z_{3})[/tex], j'ai utilisé les formules ci-dessous :
[tex]U_{1} = X_{1}Z_{2}^{2}, U_{2} = X_{2}Z_{1}^{2}, S_{1} = Y_{1}Z_{2}^{3}, S_{2} = Y_{2}Z_{1}^{3}, H = U_{2} - U_{1}, R = S_{2} - S_{1}[/tex]
[tex]X_{3} = R^{2} - h^{3} - 2U_{1}H^{2}, Y_{3} = R(U_{1}H^{2} - X_{3}) - S_{1}H^{3}, Z_{3} = Z_{1}Z_{2}H[/tex]
Mais après le calcul, le programme me renvoie des coordonnées négatives e.g. [tex](-2854978200,-5344897546224,578)[/tex]. J'essaie de les convertir en coordonnées affines, il me renvoie [tex](-8545, -27679)[/tex]. La coordonnée x est en effet [tex]-8545.689 \dots[/tex] car elle n'est pas divisible par [tex]Z^{2}[/tex].
Donc j'aimerais savoir aussi ce qu'il faut faire si les coordonnées ne sont pas des nombres entier ? Et si elles sont négatives ? J'ai essayé de calculer le modulo de la taille du corps de la courbe, mais le résultat est toujours différent de celui obtenu en utilisant les coordonnées affines.
Merci d'avance et bonne soirée.
Hors ligne







