cs_Bki
Messages postés32Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention25 mai 2004
-
14 avril 2003 à 01:46
D1m3x
Messages postés402Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention21 juillet 2005
-
4 mai 2003 à 20:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
D1m3x
Messages postés402Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention21 juillet 20051 4 mai 2003 à 20:53
Euh je vois pas pk tu met: char char mot[999];
le maximum de lettre d'un char étant de 256 ça ne te sert strictement à rien!
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 16 avril 2003 à 23:23
Laisse à l'user le soin de choisir la clé
soseki
Messages postés3Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention16 avril 2003 16 avril 2003 à 22:28
C juste pour qu'il est une valeur, on peut mettre ce que l'on veut.
ça changera l'apparence du contenu du fichier crypté.
!!!!Le code que j'ai mis est faux :
il faut mettre des 1 à la place des 2 au niveau du while et du fwrite !!!!
désolé
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 16 avril 2003 à 19:03
pourquoi CLE est égal à 57 ? :-))
soseki
Messages postés3Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention16 avril 2003 16 avril 2003 à 16:23
Pour le cryptage XOR, je crois que cela suffit non ?:
if ((Out = fopen(argv[2], "wb+" ))== NULL)
{
printf("Fichier %s imppossible à créer
",argv[2]);
fclose(In);
exit(-1);
}
while (fread(&byte,2,2,In))
{
byte ^=CLE;
fwrite(&byte,2,2,Out);
}
fclose(In);
fclose(Out);
}
Krox68
Messages postés157Date d'inscriptionjeudi 17 octobre 2002StatutMembreDernière intervention11 septembre 20041 16 avril 2003 à 15:19
ok merci pour vos bons commentaires,
c'est si rare...
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 15 avril 2003 à 15:36
C bon mais alors c'est long comme code !!!!!!!!!!!!!!!!!! (cf ma source sur le même sujet)
PAS DE GOTO !!!
crypt et decrypt, c'est la même chose effectivement
cs_AmK
Messages postés368Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention27 janvier 20101 15 avril 2003 à 15:12
Ben ya comme meme quelques erreurs,(je suis sur que t'as pas fait expres de les faire
ça peut arriver :))
1- puisque tu utilises exit(0) tu devrais alors inclure le fichier d'entete <stdlib.h>
2-inclure le header file <string.h> pour strlen
3-Tu as declare ta fonction de type int , mais quand tu l'as appelle tu as fait comme ci
elle etait de type void !
donc au lieu de int decrypt();
mets : void decrypt();
c'est pareil pour crypt(); !
voila ta source sans les bugs :
#include
#include <stdio.h>
#include <conio.h>
#include <string.h> /* Pour strlen ! */
#include <stdlib.h> /* Pour exit ! */
PS: j'ai mis cin , a la place de gets mais je suis pas sur de mon coup là!
une chose est sur avec gets ça marchait pas bien,parceque impossible de saisir le mot !
Voila tu peux aussi comme l'a dis goldeneye inscrire le tout dans un fichier ça serait pas mal !
par exemple voila la source de cryptage seulement avec fichier :
struct compi {char mot[999],motc[999];int cle ; }; /* Strcture qui va nous servir pour la manipulation de fichiers !*/
void fichier();
void fenetre();
void fichier() /* Definition de la fonction fichier */
{
FILE *X;
char rep;
int t,i;
compi c; /* Variable de type structure */
int cle;
textcolor(12);
textbackground(10);
printf("
Programme de cryptage du XOR en mode fichier
");
X=fopen("crypta.txt","a+"); /* Ouverture du fichier en mode a+ c'est a dire on peut ajouter des donnees sans detruire */
do
{
printf("
Entrez votre mot et votre cle !");
scanf("%s %d",&c.mot,&c.cle);
fwrite(&c,sizeof(compi),1,X);
t=strlen(c.mot);
for (i=0;i<=t;i++)
{
c.motc[i]=c.mot[i] ^ cle;
}
printf("
Encore ?");
rep=getche();
}
while (rep=='o');
fclose(X);
}
void fenetre()
{
char mot1[999],motc1[999];
int n,cle1,j;
textcolor(16);
textbackground(20);
printf("
Cryptage du XOR en mode Direct !
");
printf("
Quel est le mot à crypter ?");
scanf("%s",&mot1);
printf("
Quelle est la cle avec laquelle tu vas crypter ?");
scanf("%d",&cle1);
n=strlen(mot1); // Calcul de la taille du mot
for (j=0;j<=n;j++)
{
motc1[j]=mot1[j] ^ cle1; // on applique l'operateur du xor lettre par lettre jusqu'a la fin du mot
}
printf("
Voila votre texte Crypte ! :
%s",motc1);
}
void main()
{
int choix;
retour:
printf("
1-Mode Fichier
2-Mode Direct
");
scanf("%d",&choix);
switch(choix)
{
case 1:
fichier(); // Appel de la fonction fichier();
break;
case 2:
fenetre(); // Appel de la fonction fenetre();
break;
default :
goto retour;
break;
}
}
/*fin */
Amicalement
A++
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 15 avril 2003 à 11:02
Ah aussi, "clé" n'est pas forcément un int, ce serait mieux si c'était un char * que tu fais tourner sur la longueur de la chaine à coder
ex
BONJOUR avec comme clé PSG
B xor P
O xor S
N xor G
J xor P
...
cs_Bki
Messages postés32Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention25 mai 2004 14 avril 2003 à 21:25
Je n'ai pas dit le contraire :)
Krox68
Messages postés157Date d'inscriptionjeudi 17 octobre 2002StatutMembreDernière intervention11 septembre 20041 14 avril 2003 à 17:45
GOLDENEYE...pardon pour le Gildeneye
Krox68
Messages postés157Date d'inscriptionjeudi 17 octobre 2002StatutMembreDernière intervention11 septembre 20041 14 avril 2003 à 17:42
merci Gildeneye jy pense...
moi je trouve kil est bien mon prog
non ?
cs_Bki
Messages postés32Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention25 mai 2004 14 avril 2003 à 15:12
<conio.h>... made by Borland... non portable
cs_Bki
Messages postés32Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention25 mai 2004 14 avril 2003 à 14:38
J'vaux dire que ça parait un peu trop enfantin pour un niveau 2 :)
cmarsc
Messages postés455Date d'inscriptionmercredi 6 mars 2002StatutMembreDernière intervention18 décembre 2003 14 avril 2003 à 11:49
strlen est dans <string.h>
getch() (<conio.c> ou .h) plus pratique que getchar() ( standard <stdio.h> )
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 14 avril 2003 à 11:19
T'inscris ça dans un fichier et ce sera nickel
cs_Bki
Messages postés32Date d'inscriptionvendredi 18 janvier 2002StatutMembreDernière intervention25 mai 2004 14 avril 2003 à 01:46
4 mai 2003 à 20:53
le maximum de lettre d'un char étant de 256 ça ne te sert strictement à rien!
16 avril 2003 à 23:23
16 avril 2003 à 22:28
ça changera l'apparence du contenu du fichier crypté.
!!!!Le code que j'ai mis est faux :
il faut mettre des 1 à la place des 2 au niveau du while et du fwrite !!!!
désolé
16 avril 2003 à 19:03
16 avril 2003 à 16:23
/* cryptage XOR */
#include <stdio.h>
#define CLE 57
void main(int argc, char**argv)
{
FILE *In,*Out;
unsigned char byte;
if (argc != 3)
{
printf("
Usage : %s <fichier source> <fichier destination>
",argv[0]);
exit(0);
}
if ((In = fopen(argv[1], "rb+"))== NULL)
{
printf("Fichier %s introuvable!
",argv[1]);
exit(-1);
}
if ((Out = fopen(argv[2], "wb+" ))== NULL)
{
printf("Fichier %s imppossible à créer
",argv[2]);
fclose(In);
exit(-1);
}
while (fread(&byte,2,2,In))
{
byte ^=CLE;
fwrite(&byte,2,2,Out);
}
fclose(In);
fclose(Out);
}
16 avril 2003 à 15:19
c'est si rare...
15 avril 2003 à 15:36
PAS DE GOTO !!!
crypt et decrypt, c'est la même chose effectivement
15 avril 2003 à 15:12
ça peut arriver :))
1- puisque tu utilises exit(0) tu devrais alors inclure le fichier d'entete <stdlib.h>
2-inclure le header file <string.h> pour strlen
3-Tu as declare ta fonction de type int , mais quand tu l'as appelle tu as fait comme ci
elle etait de type void !
donc au lieu de int decrypt();
mets : void decrypt();
c'est pareil pour crypt(); !
voila ta source sans les bugs :
#include
#include <stdio.h>
#include <conio.h>
#include <string.h> /* Pour strlen ! */
#include <stdlib.h> /* Pour exit ! */
/*############################################################################*/
void crypt()
{
char mot[999];
char crypt[999];
int cle;
cout << "mot a crypter : ";
cin>>mot;
cout << "cle numerique : ";
cin >> cle;
for(int n=0;n<strlen(mot);n++)
{
crypt[n] = mot[n] ^ cle;
}
cout << crypt;
}
/*############################################################################*/
void decrypt()
{
char motc[999];
char decrypt[999];
int cle2;
cout << "mot : ";
cin>>motc;
cout << "cle numerique : ";
cin >> cle2;
for(int n=0;n<strlen(motc);n++)
{
decrypt[n] = motc[n] ^ cle2;
}
cout << decrypt;
}
/*############################################################################*/
int main()
{
int choix;
cout << "1.Crypter
2.Decrypter
";
cin >> choix;
switch(choix)
{
case 1:
crypt();
break;
case 2:
decrypt();
break;
default:
exit(0);
break;
}
getchar();
}
PS: j'ai mis cin , a la place de gets mais je suis pas sur de mon coup là!
une chose est sur avec gets ça marchait pas bien,parceque impossible de saisir le mot !
Voila tu peux aussi comme l'a dis goldeneye inscrire le tout dans un fichier ça serait pas mal !
par exemple voila la source de cryptage seulement avec fichier :
#include <stdio.h>
#include <string.h>
#include <econio.h>
struct compi {char mot[999],motc[999];int cle ; }; /* Strcture qui va nous servir pour la manipulation de fichiers !*/
void fichier();
void fenetre();
void fichier() /* Definition de la fonction fichier */
{
FILE *X;
char rep;
int t,i;
compi c; /* Variable de type structure */
int cle;
textcolor(12);
textbackground(10);
printf("
Programme de cryptage du XOR en mode fichier
");
X=fopen("crypta.txt","a+"); /* Ouverture du fichier en mode a+ c'est a dire on peut ajouter des donnees sans detruire */
do
{
printf("
Entrez votre mot et votre cle !");
scanf("%s %d",&c.mot,&c.cle);
fwrite(&c,sizeof(compi),1,X);
t=strlen(c.mot);
for (i=0;i<=t;i++)
{
c.motc[i]=c.mot[i] ^ cle;
}
printf("
Voila votre texte Crypté ! : %s",c.motc);
fwrite(&c,sizeof(compi),1,X);
printf("
Encore ?");
rep=getche();
}
while (rep=='o');
fclose(X);
}
void fenetre()
{
char mot1[999],motc1[999];
int n,cle1,j;
textcolor(16);
textbackground(20);
printf("
Cryptage du XOR en mode Direct !
");
printf("
Quel est le mot à crypter ?");
scanf("%s",&mot1);
printf("
Quelle est la cle avec laquelle tu vas crypter ?");
scanf("%d",&cle1);
n=strlen(mot1); // Calcul de la taille du mot
for (j=0;j<=n;j++)
{
motc1[j]=mot1[j] ^ cle1; // on applique l'operateur du xor lettre par lettre jusqu'a la fin du mot
}
printf("
Voila votre texte Crypte ! :
%s",motc1);
}
void main()
{
int choix;
retour:
printf("
1-Mode Fichier
2-Mode Direct
");
scanf("%d",&choix);
switch(choix)
{
case 1:
fichier(); // Appel de la fonction fichier();
break;
case 2:
fenetre(); // Appel de la fonction fenetre();
break;
default :
goto retour;
break;
}
}
/*fin */
Amicalement
A++
15 avril 2003 à 11:02
ex
BONJOUR avec comme clé PSG
B xor P
O xor S
N xor G
J xor P
...
14 avril 2003 à 21:25
14 avril 2003 à 17:45
14 avril 2003 à 17:42
moi je trouve kil est bien mon prog
non ?
14 avril 2003 à 15:12
14 avril 2003 à 14:38
14 avril 2003 à 11:49
getch() (<conio.c> ou .h) plus pratique que getchar() ( standard <stdio.h> )
14 avril 2003 à 11:19
14 avril 2003 à 01:46