ce code permet un cryptage et decryptage de vigenere.
pour executer le programme :
compiler
en ligne de commande taper : vigenere.exe -c -pwd nomfichier
pwd : le mot de passe pour le cryptage.
nomfichier : le nom de fichier à crypter
pour le decryptage : mm syntaxe en replacant c par d.
Source / Exemple :
/*
Name: vigenere
Copyright: Mars 2011
Author: Lajouad Rachid
Date: 06/03/11 22:00
Description: cryptage et décryptage par la méthode de viginère
avec une ligne de commande
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
char Crypt(char,char*);
char Decrypt(char,char*);
int main(int argc,char *argv[]) {
if(argc < 4) {
printf("syntax error : \n"
"Syntaxe de la commande : \n\n\t"
"%s -{c|d} -pwd NomFichier\n",argv[0]);
getchar();
exit(1);
}
if(strcmp(argv[1],"-c") == 0) {
FILE *fs, *fd;
char fname[200],pwd[10];
char c;
fs = fopen(argv[3],"rb+");
if(fs == NULL) {
printf("syntax error : \n"
"Syntaxe de la commande : \n\n\t"
"%s -{c|d} -pwd NomFichier\n",argv[0]);
printf("\n\n fichier inexistant ... Retype command ... ");
getchar();
exit(1);
}
strcpy(fname,argv[3]);
fname[strlen(argv[3])-3] = 'v';
fname[strlen(argv[3])-2] = 'i';
fname[strlen(argv[3])-1] = 'g';
fd = fopen(fname,"wb+");
// sauvegarder l'extension à l'interieur du fichier crypté
fprintf(fd,"%c",argv[3][strlen(argv[3])-3]);
fprintf(fd,"%c",argv[3][strlen(argv[3])-2]);
fprintf(fd,"%c",argv[3][strlen(argv[3])-1]);
while( !feof( fs ) ) {
fscanf(fs,"%c",&c);
fprintf(fd,"%c",Crypt(c,argv[2]));
}
fclose(fs); fclose(fd);
}
else if(strcmp(argv[1],"-d") == 0) {
FILE *fs, *fd;
char fname[200],pwd[10];
char c;
int j = 0;
fs = fopen(argv[3],"rb+");
if(fs == NULL) {
printf("\n\n fichier inexistant ... Retype command ... ");
exit(1);
}
strcpy(fname,argv[3]);
//rerstauration de l'extension du fichier
while( !feof( fs ) ) {
if( j < 3) {
j++;
fscanf(fs,"%c",&c);
fname[strlen(argv[3])-4+j] = c;
}
else {
if(j == 3) fd = fopen(fname,"wb+");
j++;
fscanf(fs,"%c",&c);
fprintf(fd,"%c",Decrypt(c,argv[2]));
}
}
fclose(fs); fclose(fd);
}
else {
printf("commutateur inconnu ...\n\n");
printf("syntax error : \n"
"Syntaxe de la commande : \n\n\t"
"%s -{c|d} -pwd NomFichier\n",argv[0]);
exit(1);
}
printf("\n\n\t\t\tsuccess ... cryptage terminé");getchar();
}
char Crypt(char c,char *pwd){
static int i;
if(++i >= strlen(pwd)) i = 0;
return (c + (pwd[i] - '0'));
}
char Decrypt(char c,char *pwd){
static int i;
if(++i >= strlen(pwd)) i = 0;
return (c - (pwd[i] - '0'));
}
Conclusion :
j'attend vos 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.