_ky_ | hello, j'ai un pitit problème sur un programme:
le but du prog, est d'ouvrir un fichier, de le crypter et de mettre le resultat dans un autre fichier.
une autre fonction fait le travail inverse (ouvre le fichier illisible, le decrypte et le met dans un troisieme fichier)
ça fonctionne si le contenu du fichier est inferieur à la taille du buffer, mais sinon, ben ça merde àla fin de la premiere boucle.
Je pense que ça foire dans le decryptage, enfin je suis pas sur
ha ouai, sinon j'utilise un cryptage avec XOR et la taille de mon buffer est de la même taille que ma clé.
Code :
- int crypt_mail(char *file_name)
- {
- FILE *fd;
- FILE *fd_2;
- char buf[BUF_SIZE];
- char tmp[BUF_SIZE];
- int i;
- int j;
- if ((fd = fopen(file_name, "r+b" )) == 0) //ouvre en lecture binaire
- return (1);
- /*move_to_cpt change le nom du fichier de *.txt à *.cpt*/
- if ((fd_2 = fopen(move_to_cpt(file_name), "a+b" )) == 0)
- return (2);
- while (i = fread(&buf, sizeof(char), BUF_SIZE, fd))
- {
- buf[i] = '\0';
- for (j = 0; buf[j];j++)
- tmp[j] ^= buf[j];
- tmp[i] = '\0';
- //on ecrit le buff encodé dans le nouveau fichier
- fprintf(fd_2, "%s", tmp);
- }
- fclose(fd);
- fclose(fd_2);
- return (0);
- }
- int decrypt_mail(char *file_name)
- {
- FILE *fd;
- FILE *fd_2;
- char buf[BUF_SIZE];
- char tmp[BUF_SIZE];
- int i;
- int j;
- if ((fd = fopen(file_name, "r+b" )) == 0)
- return (1);
- if ((fd_2 = fopen("decrypt.txt", "a+b" )) == 0)
- return (2);
- while (i = fread(&buf, sizeof(char), BUF_SIZE, fd))
- {
- buf[i] = '\0';
- for (j = 0; j != i; j++)
- tmp[j] ^= buf[j];
- tmp[j] = '\0';
- fprintf(fd_2, "%s", tmp);
- }
- fclose(fd);
- fclose(fd_2);
- return (0);
- }
|
voila, si quelqu'un à de l'inspiration qu'il m'en fasse part |