Top Ad unit 728 × 90

Déchiffrement du Code César

 Crypter-décrypter en utilisant l'algorithme de césar

 Bonjour a tous

Voici ma première source ;)
Elle permet de crypter un texte en utilisant l'algorithme de Cesar (déballage de n lettres sur tout le texte), n peut etre choisi par l'utilisateur ;)
Elle permet aussi de décrypter un texte crypter selon cette méthode


Le texte a crypter ou a décrypter doit être présent dans un fichier nommé readme.txt a la racine de la source compilée ;)
Lors du cryptage et du décryptage, le texte original est gardé

Crypter-decrypter en utilisant l'algorithme de cesar

Pour le decryptage, toutes les possibilités (n=1 >> n=26) sont écrites ci dessous :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
 
#define TAILLE_MAX 500
 
void clean_stdin (void);
void pause (int); 

char *openfichier()
{
 static char str[2000] = "";
 
 FILE* fichier = NULL;
 char chaine[TAILLE_MAX] = "";
 
    fichier = fopen("readme.txt", "r"); 
 
 if (fichier != NULL)
 {
  printf ("\n---== Texte a crypter ==---\n\n\n");
  while (fgets(chaine, TAILLE_MAX, fichier) != NULL) 
        {
   strcat(str, chaine);
            printf("%s", chaine); 
     }
  printf ("\n\n\n---== Texte a crypter ==---");
        fclose(fichier); 
 }
 else
 {
  system("cls");
  printf("\n\nImpossible d'ouvrir le fichier readme.txt\n\n");
  pause (1);
  exit(EXIT_FAILURE);
 } 
 return str;
 
}

 
void cesar_crypt (int decallage, char *texte)
{
 char c;
 int decMin = decallage - 'a';
 decallage -= 'A';
 while(c = *texte) 
 {
  if(c > 'z') goto nextCHR;
  if(c < 'A') goto nextCHR;
  if(c <= 'Z') goto goMAJ;
  if(c < 'a') goto nextCHR;
  c = 'a' + (c + decMin) % 26;
  goto goREPLACE;
        goMAJ:
  c = 'A' + (c + decallage) % 26;
        goREPLACE: *texte = c;
        nextCHR: texte++;
  } 
}

int main(int argc, char *argv[])
{
 int menu = 0;

 printf("\n==== Menu ====\n\n\n");
 printf("1. Cryptage\n\n");
 printf("2. Decryptage\n\n");
 printf("3. Quitter\n\n\n");
 scanf("%d", &menu);

 printf("\n"); 

 if (menu == 1)
 {
  int decalage;
  int crypter = 0;
  
  FILE* fichier = NULL; 
  
  char *texte;
  texte = openfichier(); 
  
  system("cls");
  printf ("\n\nUtiliser un decallage de combien de lettres pour crypter ce fichier ?\n\n");
  scanf  ("%d", &decalage);
  
  printf ("\n\nVoulez-vous vraiment crypter ce texte en utilisant un decalage de %d lettres ?\n\n", decalage);
  
  printf ("Ecrivez 1 pour Oui ou 0 pour Non\n\n");
  scanf  ("%d", &crypter);
  
  if (crypter == 1)
  {
   system ("cls");  
   cesar_crypt (decalage, texte);
   printf ("\n---== Texte apres chiffrement ==---\n\n\n");
   printf ("%s\n", texte);
   printf ("\n\n---== Texte apres chiffrement ==---\n\n");
   
   fichier = fopen("readme.txt", "a+");
   
   if (fichier != NULL)
   {
    fprintf(fichier, "\n\nTexte Crypte : \n\n%s", texte);
    fclose(fichier); 
   }    
   pause (1);  
  }
  else if (crypter == 0)
  {
   system ("cls");
   printf ("\nAu revoir, et bonne journee\n\n");
   pause (1);  
  }
  else if (crypter < 0 || crypter > 1)
  {
   printf ("\nVeuillez entrer 0 ou 1\n\n");
   scanf ("%d", &crypter);
   
   while (crypter < 0 || crypter > 1)
   {
    printf ("\nVeuillez entrer 0 ou 1\n\n");
    scanf ("%d", &crypter);
   }
   
   if (crypter == 1)
   {
    system ("cls");  
    cesar_crypt (decalage, texte);
    printf ("\n---== Texte apres chiffrement ==---\n\n\n");
    printf ("%s\n", texte);
    printf ("\n\n---== Texte apres chiffrement ==---\n\n");
    
    fichier = fopen("readme.txt", "a+");

    if (fichier != NULL)
    {
     fprintf(fichier, "\n\nTexte Crypte : \n\n%s", texte);
     fclose(fichier); 
    } 
    pause (1);  
   }
   else if (crypter == 0)
   {
    system ("cls");
    printf ("\nAu revoir, et bonne journee\n\n");
    pause (1);   
   }
  }
 }

 if (menu == 2)
 {
  int decalage = 26 ; 

  FILE* fichier = NULL; 
  
  char *texte;
  texte = openfichier();
  
  while (decalage > 0)
  {
   cesar_crypt (decalage, texte);

   fichier = fopen("readme.txt", "a+");
   if (fichier != NULL)
   {
    fprintf(fichier, "\n\n%s", texte);
    fclose(fichier); 
   } 
   decalage--;  
  }

  system("cls");
  printf("\n\nDecryptage reussi, disponible dans le fichier readme.txt\n\n");
  pause(1);
 }

 if (menu == 3)
 {
  getchar();
 }
 if (menu > 3 || menu < 1)
 {
  exit(EXIT_FAILURE);
 }
}
 
void clean_stdin (void) 
{
    int c = 0;
    do
    {
      c = getchar();
    } 
 while (c != '\n' && c != EOF);
}
 
void pause (int b)
{
    printf ("\nAppuyez sur Entrer pour quitter\n");
    if (b==0)
        getchar ();
    else if (b==1)
    {
        clean_stdin ();
        getchar ();
    }
}
/*Merci a SoftEvans, Melem, Pouet_forever et Brunews*/
 

Crypter-decrypter en utilisant l'algorithme de cesar

 
Déchiffrement du Code César Reviewed by Badr Dev on 14:28 Rating: 5

Aucun commentaire:

All Rights Reserved by Cours Réparation : On vous Explique Comment © 2014 - 2023
Powered By Blogger, Designed by Sweetheme

Formulaire de contact

Nom

E-mail *

Message *

Fourni par Blogger.
Pour Trouvez D'autre Solution ... !!
Cliquer Sur " J'aime " ^_^