Cryptage d'un texte

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 843 fois - Téléchargée 36 fois

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

Ajouter un commentaire Commentaires
Messages postés
36
Date d'inscription
jeudi 26 juin 2003
Statut
Membre
Dernière intervention
11 septembre 2005

YA RIEN QUI MARCHE CHEZ MOI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
J'ai compilé ton prog en Visual C++.
Et la cypteur et decodeur ne marche pas du tout.
Messages postés
88
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
27 mars 2006

No pb pdq . Ca fait toujours plaisir les feelback , merci .
Et larsson c la meme clef ki crypte et decrypte , ta du te gourer qqpart ...
Messages postés
6
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
31 décembre 2003

merci ta source ma ete d'un utiliser folle pour un programme

simple mais eficace ;-)
Messages postés
41
Date d'inscription
dimanche 16 février 2003
Statut
Membre
Dernière intervention
8 juin 2007

bonne idee pas mal au faite tu peut mieux faire en utilisant la crypto symetrique la même cle qui crypte et qui decrypte!
Messages postés
88
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
27 mars 2006

un algo bidon . En fait il y en a deux . Un ki crypte en alphabétique et lautre en ascii. Le nom des fonctions est qd meme asssez explicite non ? :) Tu utlise une clé pour crypte, ke tu saisie . C'est une substitution par clé sa s'appel. par exmple : a=97 en ascci la clé :b=98 ca va donne c par exemple ! f le test tu verra ce ke ca donne . Si ta dautre kestion nesite pas au cas ou je fus pas clair.
Afficher les 6 commentaires

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.