Annonce

Réduire
Aucune annonce.

Crypter simple avec César en Langage C

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Crypter simple avec César en Langage C

    Comment crypter un fichier avec le code de cryptage de César ?

    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);
            
                    
    }
    Pour décrypter c'est la même chose sauf qu'il faut décrypter de droite à gauche.

    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);
            
                    
    }
    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.
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|
Chargement...
X