Je ne sais pas ce qu'est keychar :). Mais globalement, je verrais plutôt crypt de cette cette manière :Code:
1
2
3
4
5 void crypt(char *text, int length, mpz_class key, char *crypted) { [...] // Lis la clé en boucle if (i%keychar.length() == 0) { // <-- ICI je ne devrais pas utiliser length ???
Et là tu utilises key_length.Code:void crypt(char *text, int text_length, unsigned char* key, unsigned int key_length, char *crypted)
Sinon, ton code m'a l'air bon. S'il te reste des problèmes, il se peut qu'ils soient au niveau de l'écriture du fichier (tu dois l'écrire en binaire et pas en ascii).
Ah, pour la clé :
Non, il n'y a pas. Si tu fais saisir la clé au clavier, il faut la mettre dans un std::string, et ensuite, convertir cette forme chaîne sous la forme tableau de char* (c'est un nom catastrophique char*, ici, en fait, on utilise char car sizeof(char) == 1, mais c'est bien en tant qu'octet/valeur de 0 à 255 qu'on les traite).Citation:
Merci bien ! Je ne connaissais pas. Il y a moyen d'utiliser cette définition avec une clé entrée au clavier avec getline() ?
Pour la conversion, le plus simple est de lire 2 caractères dans ta chaîne, et de les convertir en entier (en faisant attention à bien préciser que c'est de l'hexadécimal), et ainsi de suite jusqu'à avoir consommé toute la chaîne.