begin process at 2012 05 28 23:59:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Cryptage vigénere


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Cryptage vigénere

vendredi 28 mai 2004 à 12:09:34 | Cryptage vigénere

babounlehobbit


Quelqu'un pourrait il me dire ce qui cloche dans mon code ??
il crypte pa scomme il le faudrai !
La grille de deprart est composee de tous le code ascii decalle ligne par ligne.
les fichiers clairs et clef sont en *.txt
Merci !

---------------------- code ---------------------------------------

//programme de cryptage a la vigenere
#define CL 10 //longeur de la clé
#define TX 110 //longeur du texte a coder
#include<stdio.h>
#include<string.h> //pour la fonction strlen()

main()
{
int a,b,i,j,s,lclef,k,d,ltx; //variable de cryptage ltx=longueur du txte (nmre ce char) s=long clef
char adresse[120]; //Adresse fichier
char txt[120];
char clef[120]; //Adresse clef
char txtkrypt[TX]={0};
char txtdekrypt[TX]={0};
char txtadekrypt[TX]={0};
char tampon[120];
FILE *f;
FILE *c;
FILE *sortie;


int ax,bx,ix,jx,sx,ch; //variable de decryptage


printf(" *********************************************\n");
printf(" * *\n");
printf(" *** Cryptage par la methode de Vigenere ***\n");
printf(" * *\n");
printf(" *********************************************\n\n\n");

//initialisation du tableau contenant tout le code ASCIIS

char grille[256][256] = {0} , lettre =0 ;
for( i = 0 ; i < 256 ; i++ )
{
for( int j = 0 ; j < 256 ; j++ )
{
grille[i][j] = lettre ;

if( ++lettre >= ( 255 + 1 ) )
lettre = 0 ;
}
lettre++ ;
}


printf("Que voulez vous faire :\n\n-1 Crypter\n\n-2 Decrypter\n\nReponse : ");
scanf("%d",&ch);
printf("\n");
switch (ch)
{

//********************************************* Cryptage ************************************************************************

case 1: printf("\n -> CRYPTAGE\n\n");

//Ouvetrure du fichier a crypter
printf("Saisir l'adresse du fichier clair : ");
scanf("%119s",adresse);
f=fopen(adresse,"r");
if (f==NULL) printf ("ERREUR OUVERTURE FICHIER ENTREE\n");

//Chargement du texte dans la variable txt
ltx=0;
while (fscanf(f,"%c",&txt[ltx])!=EOF)
{ltx=ltx+1;}
printf("\nNombre de caracteres : %i \n\n",ltx);

//Ouverture de la clef
printf("Saisir l'adresse de la clef : ");
scanf("%s",adresse);
c=fopen(adresse,"r");
if (c==NULL) printf ("ERREUR OUVERTURE FICHIER ENTREE\n");

//Chargement de la clef dans la variable clef
lclef=0;
while (fscanf(c,"%c",&clef[lclef])!=EOF)
{lclef=lclef+1;}
clef[lclef]='\0';

//Rallongement de la clef si necessaire
k=(ltx/lclef)+1;
//printf(" k = %i\n",k);
strcpy(tampon,clef); //Copie clef dans tampon en effaçant le contenu de tampon
tampon[lclef]='\0';
for (d=0;d<k;d++) strcat(clef,tampon); //Copie tampon kfois a la suite de clef

//Traitement - Cryptage
a=0;
b=0;
s=strlen(clef); //longeur de la clef
for(d=0;d<ltx;d++)
{
for(i=0;i<256;i++)
{ //incrementation de i
if(txt[a]==grille[0][i])
{ //si le caractere de txt egal un caractere de i
for(j=0;j<256;j++)
{ //incrementation de j
if(clef[b]==grille[j][0]) //si le caractere de cle egal un caractere de j
txtkrypt[a]=grille[j][i]; //txt a coder =caractere en j et en i
}
}
}
a++; //incrementation de a(caractere de txt)
b++; //incrementation de b(caractere de cle)
if(b==s)b=0; //si b=longeur de la cle alors b=0
}


//printf("Texte crypte : ");
//for(d=0;d<i;d++) printf("%c",txtkrypt[d]); //affiche texte crypté
printf("\n\n");

//enregistrement du texte decrypté dans un fichier
printf("Saisir l'adresse du fichier dans le quel mettre le texte crypte : ");
scanf("%119s",adresse);

//fopen en read puis message: si le fichier existe deja atention il va etre ecrasé sinon on affiche ficheire créé.
//fclose
//fopen en read

sortie=fopen(adresse,"w");

i=0;
for (i=0;i<ltx;i++) fprintf(sortie,"%c",txtkrypt[i]);

fclose(f);
fclose(c);
fclose(sortie);
break;


//********************************************* Décryptage ************************************************************************


case 2: printf("\n -> DECRYPTAGE\n\n");

//Ouvetrure du fichier a décrypter
printf("Saisir l'adresse du fichier crypte : ");
scanf("%119s",adresse);
f=fopen(adresse,"r");
if (f==NULL) printf ("ERREUR OUVERTURE FICHIER ENTREE\n");

//Chargement du texte dans la variable txtadekrypt
ltx=0;
while (fscanf(f,"%c",&txtadekrypt[ltx])!=EOF)
{ltx=ltx+1;}

printf("\nNombre de caracteres : %i \n\n",ltx);

//Ouverture de la clef
printf("Saisir l'adresse de la clef : ");
scanf("%s",adresse);
c=fopen(adresse,"r");
if (c==NULL) printf ("ERREUR OUVERTURE FICHIER ENTREE\n");

//Chargement de la clef dans la variable clef
lclef=0;
while (fscanf(c,"%c",&clef[lclef])!=EOF)
{lclef=lclef+1;}
clef[lclef]='\0';

//Rallongement de la clef si necessaire
k=(ltx/lclef)+1;
//printf(" k = %i\n",k);
strcpy(tampon,clef); //Copie clef dans tampon en effaçant le contenu de tampon
tampon[lclef]='\0';
for (d=0;d<k;d++) strcat(clef,tampon); //Copie tampon kfois a la suite de clef

//Traitement - Décryptage
ax=0;
bx=0;
sx=strlen(clef);
for(d=0;d<ltx;d++)
{
for(jx=0;jx<256;jx++)
{
if(clef[bx]==grille[jx][0])
{
for(ix=0;ix<256;ix++)
{
if(txtadekrypt[ax]==grille[jx][ix])
{ txtdekrypt[ax]=grille[0][ix]; }
}
}
}
ax++;
bx++;
if(bx==sx)bx=0;
}

printf("Texte decrypte : ");
for(d=0;d<i;d++) printf("%c",txtdekrypt[d]); //affiche texte decrypté
printf("\n\n");

//enregistrement du texte decrypté dans un fichier
printf("Saisir l'adresse du fichier dans le quel mettre le texte decrypte : ");
scanf("%119s",adresse);

//fopen en read puis message: si le fichier existe deja atention il va etre ecrasé sinon on affiche fichier créé.
//fclose
//fopen en read

sortie=fopen(adresse,"w");
i=0;
// do { fprintf(sortie,"%c",txtdekrypt[i]) ; i=i+1; } while (txtdekrypt[i]!='\0');
for (i=0;i<ltx;i++) fprintf(sortie,"%c",txtdekrypt[i]);

fclose(f);
fclose(c);
fclose(sortie);

}; //Fin du case



return 0;}

vendredi 28 mai 2004 à 14:56:05 | Re : Cryptage vigénere

maevasa


je crois que ton problème vient de là:
#define CL 10 //longeur de la clé
#define TX 110 //longeur du texte a coder

parce que dès que ton fichier est plus grand que 110 ça plante !
de plus l'erreur d'affichage que tu as je n'ai pas compris d'où il provient
samedi 29 mai 2004 à 10:45:56 | Re : Cryptage vigénere

babounlehobbit


merci !
c tres con en fait !


Cette discussion est classée dans : printf, adresse, clef, ltx, lclef


Répondre à ce message

Sujets en rapport avec ce message

Gestion des espaces en C [ par maximax ] Bonjour à tous...je suis nouveau ici et j'ai un pb avec un petit programme tout bête en C...En gros, je veux que l'utilisateur entre les informations Ayez pitié de moi !!! HELP PLEASE ! [ par maximax ] Bonjour à tous...je suis nouveau ici et j'ai un pb avec un petit programme tout bête en C...En gros, je veux que l'utilisateur entre les informations Trier une structure indexée [ par RootASM ] Bonjour,J'ai écrit un programme qui permet de faire des recherches, ajout, suppression sur une liste de membres.Je dois trier cette liste de nom, lors Toujours besoin d'aide sur socket avec 2 cartes reseau [ par Jeff_Trek ] Bonjour,Je reçois des trames grace à ma socket cliente (qui doit être liée à une carte reseau), et renvoyer ces trames via une socket serveur (qui doi Probleme Char [ par romainbisson ] Bonjour,j'ai crée des char qui recupere des valeurs tapé par l'utilisateur :    char nom[5000];    char prenom[5000];    char adresse[5000];    char c utilisation des fichiers dans une fonction [ par chroctar ] Bonjour, Pourriez vous m'aider ? Je dois faire un projet qui consiste à créer un agenda numerique.Voila mon probleme :J'ai créé une fonction dans laqu test(variable personaliser+tableau+boucle) [ par florent175 ] [b]J[/b]e ne comprend pas d'où vient l'erreur dans mon code ci dessous.[^^confus3] [b]L[/b]e programme doit récupéré le nom, le prénom, puis l'adress pointeur de pointeur de pointeur [ par am1150 ] Salut, quelqu'un peut-il me dire pourquoi à partir de la 3emme adresse de **a est égale à 0? code : char* EnerconTextAlTest3(char* NamePark,int Nu regardez ma source HELP [ par asnow ] BonjourJe debute en C. j'ai voulu apprendre à enregistrer des données dans un fichier, ca a donné ce code .Si vous pouviez me donner des recommandatio Adresse MAC [ par none77 ] Bonjour,j'aimerais savoir s'il est possible de récupérer l'adresse MAC d'un pc distant sur un réseau local.Merci,None.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales