J'utilise Libgcrypt avec Elgamal pour chiffrer un bloc d'octets, et je suis d'avoir 2 problèmes:perte de données lors du cryptage et de décryptage en utilisant libgcrypt et Elgamal
Quand je ne l'utilise pas padding et mon bloc de octets commence lequel un octet zéro, je perds le premier octet pendant le déchiffrement;
Si j'utilise un remplissage, le cryptage fonctionne bien, mais lorsque je décrypte le remplissage n'est pas supprimé. Et apparemment le premier octet zéro toujours là.
Avec RSA, je suis le même problème :(
Mon code de test est là. www.tiago.eti.br/storage/post.c Et ne pas utiliser le rembourrage
Pour utiliser padding vous devez changer:
#define PADDING "raw"
à
#define PADDING "pkcs1"
Et pour changer le changement de l'algorithme de chiffrement:
#define ALG "elg"
à
#define ALG "rsa"
Pour vous compilez devez utiliser:
gcc -Wall -g post.c -lgcrypt -o post
Que puis-je faire pour le résoudre?
Je ne suis pas sûr que je m'attendrais à ce que le rembourrage soit supprimé lorsque le bloc est déchiffré. – argentage
Dans la documentation, vous trouverez ceci: « Fonction:. Gcry_error_t gcry_pk_decrypt (gcry_sexp_t * r_plain, données gcry_sexp_t, gcry_sexp_t spour) (...) Cette fonction ne supprime pas le rembourrage à partir des données par défaut Pour laisser Libgcrypt enlever le rembourrage, donner un indice dans 'flags 'indiquant quelle méthode de remplissage a été utilisée lors du chiffrement: (flags padding-method)" Et je l'ai fait. Mais cela n'a pas fonctionné.... –