Bonjour, je suis en train de faire une classe qui va me permettre de crypter les données d’une transaction entre deux clients certifiés.

Pour certifié que j’ai le même client au bout de ma communication j’ai utilisé le principe diffie hellman avec la lib d’OpenSsl.

Seulement comme j’utilise le réseau pour faire passé la clé publique et les autres informations genre ‘p’ et ‘g’ je dois transforme tout en hexadécimal, heureusement il y a des fonctions pour la conversion.

Voici mon problème, quand je fais passer les informations publique de
alice a bob (p, g, pub_key) avec une copy du même type que celle prévue pour accueillir ces même information l’opération réussi et les clé privé sont bien les mêmes.


BN_copy(dhBob->p, dhAlice->p);
BN_copy(dhBob->g, dhAlice->g);

Resultat : Alice et bob on la meme cle privé.

Alice calculated:
A6A480EFF04D1C89
Bob calculated:
A6A480EFF04D1C89


Maintenant comme mes valeurs seront recuperé sous la forme hexadecimal par reseau, j’utilise la function suivant pour remplir mes variable:


//Set the parameters with hexa values (by reseaux)
BN_hex2bn(&dhBob->p,"979BDD86B4AFB637");
BN_hex2bn(&dhBob->g,"05");

Resultat : Echec!

Alice calculated:
D184B0E02CEC3608
Bob calculated:
CDCDCDCDCDCDCDCD

Quand je liste les structures pour vérifié les valeurs, elle s'affiche bien, et quand je check la structure elle est aussi sans erreur.
Merci de me donné un coup de main pour se problème que je n’arrive pas à résoudre.