Voici le premier code que j'avais ecrit :
Puis a la suite du post :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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 #include <stdio.h> #include <stdlib.h> #include "crypt.h" void crypt() { char chaine[100] = ""; char chaine2[20] = ""; FILE *fichier = NULL; // Fichier d'origine FILE *crypt = NULL; // fichier crypté int taille = 0, i = 0, j = 0; // Taille pour malloc char *tableau = NULL; printf("Placer le fichier a crypter dans le meme dossier que le programme.\n"); printf("Indiquez son nom (son extension y compris ex : fichier.ext)."); printf("\nAttention la console ne gere pas les accents et les espaces !!!\n"); scanf("%100s", chaine); // Adresse du fichier fichier = fopen(chaine, "rb"); // En mode lecture binaire if (fichier == NULL) // Si y a erreur { printf( "Erreur d'ouverture du fichier." ); exit( EXIT_FAILURE ); } fseek( fichier, 0, SEEK_END); // La taille pour le malloc taille = ftell( fichier ); rewind( fichier ); tableau = malloc ( taille * sizeof(char)); // Allocation dynamique if ( fread( tableau, 1, taille, fichier) < taille ) // tableau, taille par paquet, nombre de paquet, flux d'entrée // fread renvoi le nombre d'element lu { printf("Le programme n'a pas pu tout crypter"); // Test d'erreur si on a reussi a tout lire exit ( EXIT_FAILURE ); } printf("\nDonnez un mot de passe pour crypter : "); getchar(); fgets(chaine2, 19, stdin); for ( i = 0; i < taille; i ++ ) // Cryptage { tableau[i] = tableau[i] ^ chaine2[j]; // Fonction XOR if (j == 19) { j = 0; // Si le mdp arrive a la fin je dois le reinitialiser } j++; } crypt = fopen( "crypt.cr", "wb"); if ( fwrite( tableau, 1, taille, crypt) < taille ) // Pareil que fread, fichier de sortie { printf("Le programme n'a pas pu tout crypter"); // gestion d'erreur exit ( EXIT_FAILURE ); } printf("\nLe fichier crypte a ete place dans le meme dossier et est nomme \"crypt.cr\"."); printf("\nAppuyer sur une touche pour continuer"); getch(); fclose(fichier); //Liberation memoire fclose(crypt); free(tableau); }
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 #include <stdio.h> #include <stdlib.h> #include "crypt.h" void crypt() { char chaine[100] = ""; // adresse char chaine2[20] = ""; // mot de passe FILE *fichier = NULL; // Fichier d'origine FILE *crypt = NULL; // fichier crypté int taille = 0, j = 0; // Taille pour test d'erreur char tableau[2] = ""; // tableau de cryptage //---------------------------------------------------------------------------------------------------------------------------------------------- Var / bases printf("Placer le fichier a crypter dans le meme dossier que le programme.\n"); printf("Indiquez son nom (son extension y compris ex : fichier.ext)."); printf("\nAttention la console ne gere pas les accents et les espaces !!!\n"); scanf("%100s", chaine); // Adresse du fichier fichier = fopen(chaine, "rb"); // En mode lecture binaire if (fichier == NULL) // Si y a erreur { printf( "Erreur d'ouverture du fichier." ); exit( EXIT_FAILURE ); } fseek(fichier, 0, SEEK_END); taille = ftell(fichier); rewind(fichier); printf("\nDonnez un mot de passe pour crypter : "); getchar(); fgets(chaine2, 19, stdin); //------------------------------------------------------------------------------------------------------------------------------------------------ CRYPTAGE, LECTURE while ( ftell(fichier) != taille ) { fread( tableau, 1, 1, fichier); //--------------------------------------------------------------------------------------------------------------------------------------------------- XOR (cryptage) tableau[0] = tableau[0] ^ chaine2[j]; // Fonction XOR if ( chaine2[j] == '\0' ) { j = 0; } else { j++; } //--------------------------------------------------------------------------------------------------------------------------------------------------- ECRITURE crypt = fopen( "crypt.cr", "wb"); fwrite( tableau, 1, 1, crypt); } //----------------------------------------------------------------------------------------------------------------------------------------------------- SUCCES printf("\nLe fichier crypte a ete place dans le meme dossier et est nomme \"crypt.cr\"."); printf("\nAppuyer sur une touche pour continuer"); getch(); fclose(fichier); //Liberation memoire fclose(crypt); free(tableau); }