Cryptage d'un texte

Contenu du snippet

Ca crypte et decrypte

Source / Exemple :

#include <stdio.h> //scanf et printf
#include <string.h> // //strcpy copie une chaine meme le caractere nul
#include <stdlib.h> //exit
#include <fstream.h>    //fichier ouverture fermeture
#include <iostream.h>  //cin.get
#include <windows.h>	  //sleep
#include <time.h>   // l'heure


#define tompon while (cin.get()!='\n');

void sortir(); //quitter le prog
void erreur(char *message);
void decrypte();
void suprime();
void cryptealpha();
void crypteascii();
void crerfichier();

void crerfichiercrypter();

char sauvnomfichierascii[30];
char sauvnomfichier[30];
char fichier[30]; //nom des fichiers
char txt[100]; //txt a crypte
char crypte[100]; //txt crypte
char cryptage[20]; //cle de crypatge
int  veriftypefichier=0;


void main()
{



	char reponse;



        printf("Faites votre choix \n");


         do
        {
         printf("(1) Cryptage en mode alphanumerique\n");

        printf("(2) Cryptage en mode ascii\n");

	printf("(3) Decrypte\n");

	printf("(4) Quitter le prog\n");

	printf("(5) Suprimer le fichier non crypter \n");

	printf("Choix : ");

        cin.get(reponse);

	    tompon;

        switch (reponse)
		{
		                case '1':
			cryptealpha();
			break;

			 case '2':
			 crypteascii();
			 break;


			case '3':
			decrypte();
			break;

			case '4' :
			sortir();
			break;

			case '5':
			suprime();
			break;

		}

        }while(1);



}


void cryptealpha()
{
	veriftypefichier=1;

	int i, j, x, y, z, longueur, lon;

	printf("Saisir le nom du fichier :");

    cin.getline(fichier,20);


	strcpy(sauvnomfichier,fichier);


	printf("Entrez la phrase a coder : ");// saisie des données à coder
	gets(txt);



	crerfichier();
	printf("Entrez la clef de cryptage : "); // saisie de la clef de codage
	gets(cryptage);

	longueur = strlen(txt); // prend la longueur de la phrase tappée
	lon=strlen(cryptage); // prend la longueur de la clef
	j=-1;

	for ( i=0; i<longueur; i++ ) // boucle qui code
	{
		if ( j >= lon-1 ) // reprend au debut de la clef
		{
			j=-1;
		}


		 if(txt[i]!=' ') // code un caractère
		 {
			j++;
			y = int(cryptage[j])-97;

			z = int(txt[i])-97;

			x = y+z; // donne la valeur entière
			if ( x > 25 )
			{
				x = x-26;
			}
			txt[i] = char(x)+97;
			
		}

	}
		strcpy(crypte,txt);
	
	printf("voici la chaine codee : %s",crypte); 

	tompon;
	crerfichiercrypter();

}






void crerfichier()
{

	if(veriftypefichier==1)
	{
	strcat(sauvnomfichier,"alpha.txt");
	ofstream sav=(sauvnomfichier);
		if (fichier==NULL)
		{
			erreur(" d'ecriture dans le fichier ");
		}
		sav<<txt;


		sav.close(); //fermeture du fichier

	}
	else
	{
	strcat(fichier,"ascii.txt");
	ofstream sav=(fichier);
	if (fichier==NULL)
	{
		erreur(" d'ecriture dans le fichier ");
	}
	sav<<txt;


	sav.close();		//fermeture du fichier

	}

	//creation de l'objet sav puis ouvre le fichier

	

	
}

void crerfichiercrypter()
{
	if(veriftypefichier==1)
	{
	strcat(fichier,"cryptealpha.txt");
	ofstream cry=(fichier);
	cry<<crypte;
	cry.close();
	
	}
	else
	{
	strcat(sauvnomfichierascii,"crypteascii.txt");
	ofstream cry=(sauvnomfichierascii);
	cry<<crypte;
	cry.close();
	}

		

		

}

void crypteascii()
{

	int z=0;
	int cpt=0;
	int i,j;
	i=j=0;



	printf("Saisir le nom du fichier\n");

    cin.getline(fichier,20);
	strcpy(sauvnomfichierascii,fichier);
	

	printf("Entrez la phrase a coder : "); // saisie des données à coder
	gets(txt);

	crerfichier();

	printf("Saisir la cle de cryptage :");
	gets(cryptage);



		cpt=strlen(txt);


	for(i=0,j=0;i<cpt;i++,j++)
	{
		if(cryptage[j]=='\0')
		{
			j=0;
		}

		crypte[i]=txt[i]+cryptage[j];

	}



	crypte[i]='\0';



	printf("Texte cryptee  ===>>> %s\n",crypte);

	crerfichiercrypter();
}





void decrypte()
{
	int longueur=0;
	int lon=0;
	int y,z,x;

	int strcyptage=0;
    int cpt=0;
	char c;
	int i,j,l;

	int a=0;
	int mode=0;

	i=j=l=0;
	


	printf("Quel fichier voulez ouvrir? Fichier :");


	scanf("%s",&fichier);
	l=strlen(fichier);


	printf("(1)Mode Alphabetique  (2)Mode Ascii :");
	
	scanf("%d",&mode);
	
	if(mode==1)
	{

	strcat(fichier,"cryptealpha.txt");
		
		ifstream charg (fichier);

			if (fichier==NULL)
			{
			erreur("de lecture");
			}
				while((c = charg.get()) != EOF)
				{
				crypte[cpt] = c;
				cout.put(c);
				cpt++;
				}

				tompon;
				charg.close();

printf("saisir la clef de decodage : ");// saisie de la clef de décodage

				
	scanf("%s",&cryptage);
			

		//longueur = strlen(crypte);

	lon = strlen(cryptage); // prend la longueur de la clef
				j=-1;

	for ( i=0; i<cpt; i++ ) // boucle qui décode
				{
	if ( j >= lon-1 ) // reprend au debut de la clef
			{
			j=-1;
			}
		if(crypte[i]!=' ') // décode un caractère
		{
							j++;
							y = int(cryptage[j])-97;
							z = int(txt[i])-97;
							x = z-y;
							if ( x < 0 )
								{
									x = 26+x;
								}
crypte[i] = char(x)+97; // affecte la valeur décodée dans le tableau
						
		}
}

				
printf("code dechiffre : ");

printf("%s \n", crypte); // affiche les données décodées

	}
	else
	{
		strcat(fichier,"crypteascii.txt");


		ifstream charg (fichier);

		if (fichier==NULL)
		{
		erreur("de lecture");
		}



	while((c = charg.get()) != EOF)
	{
		crypte[cpt] = c;
		cout.put(c);
		cpt++;
		printf("%s",&crypte);
	}

		tompon;
	charg.close();

	printf("Saisir cle de decryptage : ");
	
	scanf("%s",&cryptage);
	strcyptage=strlen(cryptage);

	for(i=0,j=0;i<cpt;i++,j++)
	{
		if(cryptage[j]=='\0')
		{
			j=0;
		}

		crypte[i]-=cryptage[j];


	}
		printf("Texte decrypte ===)->> %s",&crypte);
		printf("\n\n\n");

		for(a=0;a<strcyptage;a++)
			cryptage[a]='\0';
		for(a=0;a<cpt;a++)
			crypte[a]='\0';

}

}

void erreur(char *message)
{
    printf("Erreur",message);
        exit(-1);
}



void suprime()
{
	char filename[30];

	printf("Saisir le nom du fichier a effacer :\n");
	gets(filename);

	if(veriftypefichier==1)
	{
	strcat(filename,"cryptealpha.txt");
	}
		else
		{
		strcat(filename,"crypteascii.txt");
		}

	
	remove(filename); //Suppression du fichier
}




void sortir()
{

	time_t H;
	time(&H);

    cout<<""<<(ctime(&H));



	int i=0;
    printf("A la prochaine |:p)[< \n");

	for(i=0;i<30000;i++)
	{
		Sleep(50/100);
		printf("/\r");
		Sleep(50/100);
		printf("-\r");
		Sleep(50/100);
		printf("|\r");
		printf("-\r");

	}

    exit(-2);
}

Conclusion :

Ya encore qqs modif a faire bien sur mais ca tourne au moin . C deja ca !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.