Comment crypter un fichier avec le code de cryptage de César ?
Voici deux codes sources :
Renommer en "crypter.c" :
Pour décrypter c'est la même chose sauf qu'il faut décrypter de droite à gauche.
Nommez le "decrypter.c" :
Compilez les sources séparément et notez que la clé doit être la même dans les deux sources sinon vos fichiers seront corrompus après décryptage.
Bien entendu, vous pouvez modifier ce système de cryptage vieux comme le monde par un système plus élaboré tel que l'AES256.
Voici deux codes sources :
Renommer en "crypter.c" :
Code:
#include <stdio.h> #include <windows.h> #include <conio.h> int main() { HANDLE Fichier; unsigned long bytes_lu,bytes_ecrit,Taille_Fichier; unsigned char * Buffer; char nom_fichier[20]; printf("\n Nom du programme:"); scanf("%s",nom_fichier); printf("\n [$] Ouverture du fichier."); //------------------------------------------------------------------------ // Ouverture du fichier //------------------------------------------------------------------------ Fichier = CreateFile(nom_fichier, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (Fichier == INVALID_HANDLE_VALUE) { printf("\n [!] Le programme ne peut pas ouvrir le fichier."); return 0; } Taille_Fichier = GetFileSize(Fichier,NULL); if (Taille_Fichier == INVALID_FILE_SIZE) { printf("\n [!] Le programme ne peut pas avoir la taille du fichier."); CloseHandle(Fichier); } Buffer = (unsigned char *)malloc(Taille_Fichier); if (Buffer == NULL) { printf("\n [!] Le programme ne peut pas allouer de la memoire. "); CloseHandle(Fichier); } ReadFile(Fichier,Buffer,Taille_Fichier,&bytes_lu,NULL); CloseHandle(Fichier); printf("\n [$] Cryptage\\Decryptage du fichier:(e/d):"); //------------------------------------------------------------------------ // Cryptage du fichier //------------------------------------------------------------------------ char CLE[100]="A(~\\UhiBCcdM$%&ys,e[E{[email protected];1]2o`Y>?39ZpJ|tF)*+GuP./0v_TVWwQR4xOSa5:bgjk<=7lmq}rK-zLf^D68A"; int i=0,j=0; for (i=0;i<Taille_Fichier;i++) { for (j=0;j<strlen(CLE);j++) { if ( (*(Buffer+i)) == CLE[j] ) { *(Buffer+i) = CLE[j+1]; break; } } } //------------------------------------------------------------------------ // Enregistrement du fichier //------------------------------------------------------------------------ Fichier = CreateFile(nom_fichier, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (Fichier == INVALID_HANDLE_VALUE) { free (Buffer); printf("\n [!] Le programme ne peut pas creer le fichier."); return 0; } if (WriteFile(Fichier,Buffer,Taille_Fichier,&bytes_ecrit,NULL)==0) { free (Buffer); printf("\n [!] Le programme ne peut pas ecrire dans le fichier."); CloseHandle(Fichier); return 0; } free(Buffer); CloseHandle(Fichier); }
Nommez le "decrypter.c" :
Code:
#include <stdio.h> #include <windows.h> #include <conio.h> int main() { HANDLE Fichier; unsigned long bytes_lu,bytes_ecrit,Taille_Fichier; unsigned char * Buffer; char nom_fichier[20]; printf("\n Nom du programme:"); scanf("%s",nom_fichier); printf("\n [$] Ouverture du fichier."); //------------------------------------------------------------------------ // Ouverture du fichier //------------------------------------------------------------------------ Fichier = CreateFile(nom_fichier, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (Fichier == INVALID_HANDLE_VALUE) { printf("\n [!] Le programme ne peut pas ouvrir le fichier."); return 0; } Taille_Fichier = GetFileSize(Fichier,NULL); if (Taille_Fichier == INVALID_FILE_SIZE) { printf("\n [!] Le programme ne peut pas avoir la taille du fichier."); CloseHandle(Fichier); } Buffer = (unsigned char *)malloc(Taille_Fichier); if (Buffer == NULL) { printf("\n [!] Le programme ne peut pas allouer de la memoire. "); CloseHandle(Fichier); } ReadFile(Fichier,Buffer,Taille_Fichier,&bytes_lu,NULL); CloseHandle(Fichier); printf("\n [$] Cryptage\\Decryptage du fichier:(e/d):"); //------------------------------------------------------------------------ // Cryptage du fichier //------------------------------------------------------------------------ char CLE[100]="A(~\\UhiBCcdM$%&ys,e[E{[email protected];1]2o`Y>?39ZpJ|tF)*+GuP./0v_TVWwQR4xOSa5:bgjk<=7lmq}rK-zLf^D68A"; int i=0,j=0; for (i=0;i<Taille_Fichier;i++) { for (j=(strlen(CLE)-1);j>0;j--) { if ( (*(Buffer+i)) == CLE[j] ) { *(Buffer+i) = CLE[j-1]; break; } } } //------------------------------------------------------------------------ // Enregistrement du fichier //------------------------------------------------------------------------ Fichier = CreateFile(nom_fichier, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (Fichier == INVALID_HANDLE_VALUE) { free (Buffer); printf("\n [!] Le programme ne peut pas creer le fichier."); return 0; } if (WriteFile(Fichier,Buffer,Taille_Fichier,&bytes_ecrit,NULL)==0) { free (Buffer); printf("\n [!] Le programme ne peut pas ecrire dans le fichier."); CloseHandle(Fichier); return 0; } free(Buffer); CloseHandle(Fichier); }
Bien entendu, vous pouvez modifier ce système de cryptage vieux comme le monde par un système plus élaboré tel que l'AES256.