1 pièce(s) jointe(s)
Implémentation de l'algorithme de génération de clé (ECC) probléme du point a l'infini
Salut les développeurs help !!!
Je réalise une petite application java qui sert à générer la clé de cryptage dans le cas du protocole ECC.
je commence par la multiplication scalaire tout d'abord
L’algorithme que j’implémente est ci-joint.
Pièce jointe 194990
Et voila ce que j’ai implémenté
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Point multiScalaire(Point p, int a, int k){
//p point a additionner
//k combien de fois l'aditionner
//Q point resultant
Point Q;
int j = 0,n;
String S;
ConvertDecimal c=new ConvertDecimal();
S=c.convert(k, 2);
double inf=Double.POSITIVE_INFINITY;
Q=new Point(inf, inf);
for(int i=0;i<S.length();i++){
if(S.charAt(i)=='1'){
//addition de deux point définie a part testée et fiable
Q= addition(p, Q);
}
//addition de deux point égaux définie a part testée et fiable
p=doublement(p, a); return Q;}
} |
Le problème c’est que j’ai des valeur du x et y de mon point Q indéfini parce que dans mon implémentation l’infini n’est pas considéré comme l’élément neutre par rapport à l’addition.
j'ai trouvé pour solution:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| Point multiScalaire(Point p, int a, int k){
//p point a additionner
//k combien de fois l'aditionner
//Q point resultant
Point Q;
int j = 0,n;
String S;
ConvertDecimal c=new ConvertDecimal();
S=c.convert(k, 2);
double inf=Double.POSITIVE_INFINITY;
Q=new Point(inf, inf);
for(int i=0;i<S.length();i++){
if(S.charAt(i)=='1' && Q.getX=Infinity && Q.getY=Infinity){
Q=p; //premiére addition de l'algorithme donne comme résultat p puisque Q=p+Q; ET Q et infini et l'infini et l'element neutre par rapport a l'addition
}
if(S.charAt(i)=='1' && Q.getX!=Infinity && Q.getY!=Infinity){
//addition de deux point définie a part testée et fiable
Q= addition(p, Q);
}
//addition de deux point égaux définie a part testée et fiable
p=doublement(p, a); return Q;}
} |
mais toujours le même problème des valeurs indéfinies à cause du fameux infini .
quelqu'un aurait une idée sur la solution de mon probléme??
merci d'avance de l'aide