Code de cryptage,débutant

cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007 - 23 avril 2006 à 22:09
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007 - 25 avril 2006 à 19:35
voila j'ai un probleme, je créé un logiciel ayant pour but de crypter un message et de le décrypter a demande. je vais dabors vous exposer mon code en 3 fichiers et ensuite les erreur qu'il contient. je ne sais pas du tout comment y remedier.

"coder_un_message.h" :

#define REMPLISSAGE 133
#define FIN_COLONE 191

void coder_un_mess( char mess[], char cle[], char mess_crypte_fin[])
{
long jMAX = 0;
long j=0;
long i=0;
long iMAX = 0;
signed J = 0;
long T=0;
int A = 0;
int test_cle[100];
char mess_crypte_tab[500][100];
for (i=0;i>1;i++)
{
for (j=0;j<strlen(cle);j++)
{
mess_crypte_tab[i][j]=mess[J];
J++;
if ( mess[J+1] == '0' )
{
iMAX = i;
jMAX=j;
i = -1;
j = strlen(cle) +1;
A = 1;
}
}
}
if (A == 1 )
{
A = 0;
iMAX = i;
jMAX=j;
if (jMAX!=strlen(cle)-1)
{
j = jMAX;
for (;j<strlen(cle);j++)
{
mess_crypte_tab[iMAX][j] = (char)REMPLISSAGE;
}
}
for (J=0;J<=strlen(cle);J++)
{
test_cle[J] = (int)cle[J];
}
for (T=0;T<=255;T++)
{
for (J=0;J<=strlen(cle);J++)
{
if (T==test_cle[J])
{
for (i=0;i<=iMAX;i++)
{
mess_crypte_fin[i] = mess_crypte_tab[i][J];
}
mess_crypte_fin[iMAX+1] = (char)FIN_COLONE;
}
}
}
}


ensuite "decoder_un_message.h"

#define DIM1 100
#define DIM2 33000
#define REMPLISSAGE 133
#define FIN_COLONE 191

void decoder_un_mess( char mess[], char cle[], char mess_decrypte_fin[])
{
int test_cle[DIM1];
char mess_crypte_tab[DIM2][DIM1];
long i=0;
int j=0;
int J=0;
long test_mess = 0;
for (J=0;J<strlen(cle);J++)
{
test_cle[J]= (int)cle[J];
}
for (i=0;i<256;i++)
{
for (J=0;J<strlen(cle);J++)
{
if ( i==test_cle[J] )
{
for (J = 0;J<DIM2;J++)
{
test_mess++;
if ((int)mess[test_mess]!= FIN_COLONE)
{
mess_crypte_tab[j][J]= mess[test_mess];
}
else
{
test_mess++;
J = -2;
}
}
}
}
}
j=0;
J=0
for (i=0;(char)mess_crypte_tab[i][j]!= FIN_COLONE;i++)
{
for (j=0;j<strlen(cle);j++)
{
if( J!=strlen(cle)-1)
{
mess_decrypte_fin[J] = mess_crypte_tab[i][j];
J++;
}
else
{
mess_decrypte_fin[++J]= ' ';
J++;
}
}
}
}


et enfin "main.cpp"

#include <cstdlib>
#include
#include "decoder_un_message.h"
#include "coder_un_message.h"
#define DIM1 100
#define DIM2 33000

void main(void)
{
char cle[DIM1];
char mess_crypte_fin[DIM2];
char mess_decrypte_fin[DIM2];
char mess[DIM2];
cout<<"//////////////////////"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// Cryptage //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"//////////////////////"<<endl;
system("PAUSE");
debut:
bool A =0;

cout<<"souhaitez-vous codez(1) ou décoder(0) un message ?"<<endl;
cint>>A;
if (A<0 || A>1)
{
cout<<"erreur"<<endl;
goto début;
}
if (A == 1)
{
cout<<"Entrez le message a coder:"<<endl;
cin>>mess;
cout<<endl<<endl<<"Entrez la cle :"<<endl<<endl;
cin>>cle;
coder_un_mess( mess, cle, mess_crypte_fin);
cout<<endl<<endl<<"Voici le message code:"<<endl<<mess_crypte_fin;
system("PAUSE");
}
else
cout<<"Entrez le message a decoder:"<<endl;
cin>>mess;
cout<<endl<<endl<<"Entrez la cle :"<<endl<<endl;
cin>>cle;
decoder_un_mess( mess, cle, mess_decrypte_fin);
cout<<endl<<endl<<"Voici le message decode:"<<endl<<mess_decrypte_fin;
system("PAUSE");
}
}


voila. maintenant les erreur :


Compilateur: Default compiler
Building Makefile: "C:\Documents and Settings\kuremu\Mes documents\projet cryptage\Makefile.win"
Exécution de make...
make.exe -f "C:\Documents and Settings\kuremu\Mes documents\projet cryptage\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"F:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"F:/Dev-Cpp/include/c++/3.4.2/backward" -I"F:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"F:/Dev-Cpp/include/c++/3.4.2" -I"F:/Dev-Cpp/include"

In file included from main.cpp:3:
decoder_un_message.h: In function `void decoder_un_mess(char*, char*, char*)':
decoder_un_message.h:27: warning: comparison is always true due to limited range of data type
decoder_un_message.h:42: error: expected `;' before "for"
decoder_un_message.h:42: warning: comparison is always true due to limited range of data type
decoder_un_message.h:42: error: expected `;' before ')' token

main.cpp: In function `void coder_un_mess(char*, char*, char*)':
main.cpp:8: error: expected primary-expression before "void"

main.cpp:8: error: expected `;' before "void"
main.cpp:34: error: stray '\233' in program

make.exe: *** [main.o] Error 1

Exécution terminée


merci d'avance. j'ai éssayé de le compiler avec visual basic 2003 et dev C++ mais toujours des erreur similaire.

et si vous avez des suggestion afin d'améliorer mon code merci de m'en faire part

12 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
23 avril 2006 à 22:45
Ben c'est des erreurs élementaires. Tu vas pas me faire croire que tu comprends pas le message d'erreur:

error: expected `;' before "for"



Tu peux pas faire plus explicite. Il te dit quoi et ou...

Corrige ca, on verra ce qu'il reste apres.
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
23 avril 2006 à 23:16
je l'ai corrigé ( elle m'avait échappé celle-la ) mais ce sont les utre erreur surtout celle dans main et dans decoder un message je voit pas trop comment cet avertissement peut etre la ^^' ( dsl ça fait que 1 mois que je programme )
maitenant j'ai ça :

Compilateur: Default compiler
Building Makefile: "C:\Documents and Settings\kuremu\Mes documents\projet cryptage\Makefile.win"
Exécution de make...
make.exe -f "C:\Documents and Settings\kuremu\Mes documents\projet cryptage\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"F:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"F:/Dev-Cpp/include/c++/3.4.2/backward" -I"F:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"F:/Dev-Cpp/include/c++/3.4.2" -I"F:/Dev-Cpp/include"

In file included from main.cpp:3:
decoder_un_message.h: In function `void decoder_un_mess(char*, char*, char*)':
decoder_un_message.h:27: warning: comparison is always true due to limited range of data type

decoder_un_message.h:42: warning: comparison is always true due to limited range of data type

main.cpp: In function `void coder_un_mess(char*, char*, char*)':
main.cpp:8: error: expected primary-expression before "void"

main.cpp:8: error: expected `;' before "void"
main.cpp:34: error: stray '\233' in program

make.exe: *** [main.o] Error 1

Exécution terminée
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 avril 2006 à 09:37
Ya un autre problème: celui de mettre des fonctions dans un .h. On a
jamais du t'apprendre ca. Car on met JAMAIS de fonction dans un .h.
Donc remets tes deux fonctions dans main.cpp et ca permettras de mieux
comprendre les erreurs. Car les erreurs que tu vois dans le main, sont
en fait dans les fichiers .h.



-- Autre chose, les GOTO, ca n'existe plus, ou en tout cas, ce NE DOIT
PLUS EXISTER. Donc tu enlèves ce goto. Et trouves un autre moyen avec
les boucles classiques.

D'ailleurs, je sais meme plus comment on les utilise
en C. Mais comme personne ne s'en sert. Ca sert a rien de le savoir.



-- for (i=0;i>1;i++) <= qu'en penses tu ?



--T'as oublié des "}" a la fin de tes fonctions. Fait attention et regarde le nombre d'ouvrante et de fermante.

-- Et t'as des erreurs d'incolades encore. Mais ca, c'est trivial a régler.
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
24 avril 2006 à 12:59
voila j'ai corrigé les erreur que tu ma dite ( et merci pour le conseil et aussi merci de m'aider ) mais j'ai compris l'exemple que tu ma donné mais je ne voit pas en quoi il y a ceci !!! je te remet mon code corrigé car il y a une nouvelle erreur et je l'ai testé et il ne march pas, il refuse de crypter, aparement il n'y a rien qui rentre dans mes variables mess_crypte_tab, mess_crypte_fin et pour le décryptage il plante.


#include <cstdlib>
#include "iostream.h"
#define DIM1 100
#define DIM2 33000
#define REMPLISSAGE 133
#define FIN_COLONE 005

/////////// FONCTION DE CODAGE D'UN MESSAGE ////////

void coder_un_mess( char mess[], char cle[], char mess_crypte_fin[])
{
long jMAX = 0;
long j=0;
long i=0;
long iMAX = 0;
signed J = 0;
long T=0;
int A = 0;
int test_cle[100];
char mess_crypte_tab[500][100];
for (i=0;i>1;i++)
{
for (j=0;j<strlen(cle);j++)
{
mess_crypte_tab[i][j]=mess[J];
J++;
if ( mess[J+1] == '0' )
{
iMAX = i;
jMAX=j;
i = -1;
j = strlen(cle) +1;
A = 1;
}
}
}
if (A == 1 )
{
A = 0;
iMAX = i;
jMAX=j;
}
if (jMAX!=strlen(cle)-1)
{
j = jMAX;
for (;j<strlen(cle);j++)
{
mess_crypte_tab[iMAX][j] = (char)REMPLISSAGE;
}
}
for (J=0;J<=strlen(cle);J++)
{
test_cle[J] = (int)cle[J];
}
for (T=0;T<=255;T++)
{
for (J=0;J<=strlen(cle);J++)
{
if (T==test_cle[J])
{
for (i=0;i<=iMAX;i++)
{
mess_crypte_fin[i] = mess_crypte_tab[i][J];
}
mess_crypte_fin[iMAX+1] = (char)FIN_COLONE;
}
}
}
}


/////////// FONCTION DE DECODAGE D'UN MESSAGE //////////////


void decoder_un_mess( char mess[], char cle[], char mess_decrypte_fin[])
{
int test_cle[DIM1];
char mess_crypte_tab[DIM2][DIM1];
long i=0;
int j=0;
int J=0;
long test_mess = 0;
for (J=0;J<strlen(cle);J++)
{
test_cle[J]= (int)cle[J];
}
for (i=0;i<256;i++)
{
for (J=0;J<strlen(cle);J++)
{
if ( i==test_cle[J] )
{
for (J = 0;J<DIM2;J++)
{
test_mess++;
if ((int)mess[test_mess] == FIN_COLONE)
{
mess_crypte_tab[j][J]= mess[test_mess];
}
else
{
test_mess++;
J = -2;
}
}
}
}
}
j=0;
J=0;
for (i=0;(int)mess_crypte_tab[i][j] == FIN_COLONE;i++)
{
for (j=0;j<strlen(cle);j++)
{
if( J!=strlen(cle)-1)
{
mess_decrypte_fin[J] = mess_crypte_tab[i][j];
J++;
}
else
{
mess_decrypte_fin[++J]= ' ';
J++;
}
}
}
}


////////// FONCTION MAIN //////////

int main(void)
{
bool A = 0;
char cle[DIM1];
char mess_crypte_fin[DIM2];
char mess_decrypte_fin[DIM2];
char mess[DIM2];
cout<<"//////////////////////"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// Cryptage //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"// //"<<endl;
cout<<"//////////////////////"<<endl;
system("PAUSE");
while (0>A || A>1)
{
cout<<endl;
cout<<"souhaitez-vous codez(1) ou décoder(0) un message ?"<<endl;
cin>>A;
}
if (A == 1)
{
cout<<"Entrez le message a coder:"<<endl;
cin>>mess;
cout<<endl<<endl<<"Entrez la cle :"<<endl<<endl;
cin>>cle;
coder_un_mess( mess, cle, mess_crypte_fin);
cout<<endl<<endl<<"Voici le message code:"<<endl<<mess_crypte_fin;
system("PAUSE");
}
else
{
cout<<"Entrez le message a decoder:"<<endl;
cin>>mess;
cout<<endl<<endl<<"Entrez la cle :"<<endl<<endl;
cin>>cle;
decoder_un_mess( mess, cle, mess_decrypte_fin);
cout<<endl<<endl<<"Voici le message decode:"<<endl<<mess_decrypte_fin<<endl;
system("PAUSE");
}
return 0;
}

et voici les nouvelle erreurs ^^ :

Compilateur: Default compiler
Building Makefile: "C:\Documents and Settings\kuremu\Mes documents\projet cryptage\Makefile.win"
Exécution de make...
make.exe -f "C:\Documents and Settings\kuremu\Mes documents\projet cryptage\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"F:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"F:/Dev-Cpp/include/c++/3.4.2/backward" -I"F:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"F:/Dev-Cpp/include/c++/3.4.2" -I"F:/Dev-Cpp/include"

In file included from F:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
from main.cpp:2:
F:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or instead of the deprecated header . To disable this warning use -Wno-deprecated.

g++.exe main.o -o "cryptage.exe" -L"F:/Dev-Cpp/lib"

Exécution terminée
Compilation OK

(il y a une erreur avec le while aussi mais ça j'éssairé dy remedier tout seul mais la j'ai cours) merci encor pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 avril 2006 à 13:18
Remplace #include "iostream.h" ou #include par #include

Et ajoutes juste en dessous des includes : using namespace std;



Sinon, le pb est que tu veux tout faire en meme temps. Fait d'abord ta
fonction d'encodage. Tu prends un exemple simple donc tu connais le
résultat apres la fonction d'encodage et tu suis chaque étape de la
fonction en vérifiant que les variables contiennent bien ce qu'elles
doivent contenir.



Sinon ya tjs un pb : for (i=0;i>1;i++)

Traduit en francais ca donne: On part de i = 0, tant que i est
supérieur a 1 on l'augmente de 1. Donc en gros, on l'augmente jamais.
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
24 avril 2006 à 19:17
bah le prob c'est que la premiere fois javais mi #include mais apres le programme ne reconnait pas les fonction cin et cout alors qu'en ajoutant le .h il les reconnais ( ??? )

et j'ai compris ton exemple mais je ne vois pas en quoi il se passe ça dans mon code. ( pour linfo ça fait 1 mois que je suis dans la programmation et japrends sur internet un peu partout et dans 2 ans jirais en université d'informatique je suis en premiere S et la programmation c'est ma vocation alors je me lance dedans maintenant )
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
24 avril 2006 à 19:43
en changeant de compilateur, ce que tu ma dit marche mais il y a une nouvelle erreur ( et oui encor et toujours lol ):

c:\Documents and Settings\kuremu\Mes documents\projet cryptage\main.cpp(181) : fatal error C1010: unexpected end of file while looking for precompiled header directive

( la ligne 181 est la derniere, apres l'accolade de fin de la fonction main )

et aussi, en le compilant avec visual studio .net 2003 , je le met en route et juste apres avoir mis la clé il bug en me donnant ces erreur :

Run-Time Check Failure #3 - The variable 'jmax' is being used without being defined.

celle la je la comprends sauf que le probleme c'est que 'jmax' n'existe pa il y a 'jMax' et avant je l'avais effectivement apelé 'jmax' mais ça me trouve toujours cette erreur.

Run-Time Check Failure #3 - The variable 'jmax' is being used without being defined.

( encor )

Run-Time Check Failure #3 - The variable 'imax' is being used without being defined.

idem mais avec imax et iMax

Run-Time Check Failure #3 - The variable 'imax' is being used without being defined.

re-idem

Unhandled exception at 0x00414b9a in cryptrage.exe: 0xC0000005: Access violation writing location 0xccdf4b3d.

( rien capté ici ^^' )

Unhandled exception at 0x00414b9a in cryptrage.exe: 0xC0000005: Access violation writing location 0xccdf4b3d.

(encor ^^' ) et jtépargne le reste car c'est la derniere erreur mais a l'infinie.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 avril 2006 à 20:12
Mais change surtout pas de compilo. Je t'ai dis:

"Remplace #include "iostream.h" ou #include par #include

Et ajoutes juste en dessous des includes : using namespace std;"



ET AJOUTE JUSTE EN DESSOUS DES INCLUDE "using namespace std;"

Si tu connais pas les espaces de nom, tapes C++ namespace sur google.

Car cout n'existe pas naturellement, mais la fonction "std::cout" oui.
Pour éviter d'avoir a mettre std partout, on utilise la commande using
namespace std;



Sinon dans ton code, tu as cette ligne : for (i=0;i>1;i++)

Ca veut dire que t'a boucle, on rentre jamais dedans !
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
24 avril 2006 à 21:12
lol oki ^^' oups je n'avais pas remarqué et pour le using namespace std, la je l'ai mi et ça marche

( javais jamais lu ça ^^' tien c'est les sites que j'utilise :
http://thot.cursus.edu/rubrique.asp?no=12187
http://inzeprog.free.fr/ )

merci encor pour ton aide. j'éssaye de remedier seul a mes problemes restant mais si je n'y arrive pa jle poserais ici ^^
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
24 avril 2006 à 23:20
bouuhhh ça fé 3h que je suis dessus et il merde toujours. j'ai tenté le decodage et il plante, je verrais en quoi je peu y remedier mais le truc la c'est que mon message codé s'affiche par 4 trefle alors je voit pas d'ou ils sortent et pourquoi ils s'affichent a la place de mon message codé.
je te repasse mon code :

#include <cstdlib>
#include
#define DIM1 100
#define DIM2 33000
#define DIM3 500
#define REMPLISSAGE 38
#define FIN_COLONE 005

/////////// FONCTION DE CODAGE D'UN MESSAGE ////////

using namespace std;

void coder_un_mess( char mess[], char cle[], char mess_crypte_fin[])
{
long lgtcle = strlen(cle);
long jMAX = 0;
long j=0;
long i=0;
long iMAX = 0;
signed J = 0;
long T=0;
int A = 0;
int test_cle[DIM1];
char mess_crypte_tab[DIM3][DIM1];
for (i=0;A!=1;i++)
{

for (j=0;j<=lgtcle && A!=1;j++)
{

mess_crypte_tab[i][j]=mess[J];
J++;
if ( mess[J] == '\0' )
{
iMAX = i;
jMAX=j;
i = -2;
j = lgtcle+1;
A = 1;
}
cout<<"j = "<<j<<endl;
cout<<"J = "<<J<<endl;
}
cout<<"i = "<>A;
}
while (0!=A && A!=1);
if (A == 1)
{
cout<<"Entrez le message a coder:"<<endl;
cin>>mess;
cout<<endl<<endl<<"Entrez la cle :"<<endl<<endl;
cin>>cle;
coder_un_mess( mess, cle, mess_crypte_fin);
cout<<endl<<endl<<"Voici le message code:"<<endl<<mess_crypte_fin;
system("PAUSE");
}
else
{
cout<<"Entrez le message a decoder:"<<endl;
cin>>mess;
cout<<endl<<endl<<"Entrez la cle :"<<endl<<endl;
cin>>cle;
decoder_un_mess( mess, cle, mess_decrypte_fin);
cout<<endl<<endl<<"Voici le message decode:"<<endl<<mess_decrypte_fin<<endl<<endl;
system("PAUSE");
}
return 0;
}


merci encor d'etre si patient et m'aider.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
25 avril 2006 à 10:39
Mais l'encodage ne plante pas. Il ne donne pas le bon résultat, mais au moins il plante pas.



Mais sinon je peux pas t'aider car je sais pas comment marche ton criptage.

Pour éclaircir le programme,
- en C++, tu peux déclarer les variables n'importes et notamment dans la boucle for:

int J=0;

...
for (J=0;J<lgtcle;J++)



tu peux remplacer par for (int J=0 ; J < lgtcle ; J++).

La variable J ne sera valable que dans cette boucle et n'existe pas hors de cette boucle.

Mais tu peux 2 lignes en dessous refaire une boucle avec :

for (int J=0 ; J < lgtcle ; J++)

{

...

}



for (int J=0 ; J < K ; J++) <= a chaque fois on recréer la variable. Mais au moins elle traine pas dans le programme.


{


...


}
0
cs_RoseX Messages postés 9 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 2 janvier 2007
25 avril 2006 à 19:35
voila j'ai tout réglé, tout marche SAUF ( biensur mdr ) la partie decoder qui plante. j'ai mi des point de repere pour qu'il me donne les valeur des variable et des systeme("PAUSE") un peu partout et aucun de s'execute, le programme plante d'entrée lors de l'éxécution de cette fonction. la je comprends vraiment pas. je voit pas de surcharge, il n'éffectue rien a par peut-etre les définitions de variable.



#include <cstdlib>
#include
#define DIM1 100
#define DIM2 33000
#define DIM3 500
#define REMPLISSAGE 38
#define FIN_COLONE 124

/////////// FONCTION DE CODAGE D'UN MESSAGE ////////

using namespace std;

void coder_un_mess( char mess[], char cle[], char mess_crypte_fin[])
{
long lgtcle = strlen(cle);
long jMAX = 0;
long j=0;
long i=0;
long iMAX = 0;
signed E = 0;
long T=0;
int A = 0;
int test_cle[DIM1];
char mess_crypte_tab[DIM3][DIM1];
for (i=0;A!=1;i++)
{

for (j=0;j<lgtcle && A!=1;j++)
{

mess_crypte_tab[i][j]=mess[E];
E++;
if ( mess[E] == '\0' )
{
j++;
iMAX = i;
jMAX=j;
i = -2;
j = lgtcle+1;
A = 1;
}
}
}
A = 0;
if (jMAX<lgtcle)
{
j = jMAX;
for (;j<lgtcle;j++)
{
mess_crypte_tab[iMAX][j] = (char)REMPLISSAGE;
}
}
for (E=0;E<lgtcle;E++)
{
test_cle[E] = (int)cle[E];
}
j = 0;
for (T=1;T<=255;T++)
{
for (E=0;E<lgtcle;E++)
{
if (T==test_cle[E])
{
for (i=0;i<=iMAX;i++)
{
mess_crypte_fin[j] = mess_crypte_tab[i][E];
j++;
}
mess_crypte_fin[j++] = (char)FIN_COLONE;
}
}
}

}


/////////// FONCTION DE DECODAGE D'UN MESSAGE //////////////


void decoder_un_mess( char mess[], char cle[], char mess_decrypte_fin[])
{
long lgtcle=strlen(cle);
int test_cle[DIM1];
char mess_crypte_tab[DIM2][DIM1];
long i=0;
int j=0;
int elem=0;
long test_mess = 0;
cout<<"lgtcle = "<<lgtcle<<endl;
for (elem=0;elem<lgtcle;elem++)
{
test_cle[elem]= (int)cle[elem];
cout<<"elem = "<<elem<<endl;

}
system("PAUSE");
for (i=0;i<256;i++)
{
cout<<"i = "<>A;
}
while (0!=A && A!=1);
if (A == 1)
{
cout<<"Entrez le message a coder : ";
cin>>mess;
cout<<endl<<endl<<"Entrez la cle : ";
cin>>cle;
coder_un_mess( mess, cle, mess_crypte_fin);
cout<<endl<<endl<<"Voici le message code:"<<endl<<mess_crypte_fin;
}
else
{
cout<<"Entrez le message a decoder : ";
cin>>mess;
cout<<endl<<endl<<"Entrez la cle : ";
cin>>cle;
decoder_un_mess( mess, cle, mess_decrypte_fin);
cout<<endl<<endl<<"Voici le message decode : "<<endl<<mess_decrypte_fin;
}
A = 0;
while ( A == 0)
{
cout<<endl<<endl<<"Voulez-vous faire une nouvelle action ? (o/n) "<<endl;
cin>>re;
if (re == 'n')
{
B = 1;
A = 1;
}
else if ( re =='o' )
{
B =0 ;
A = 1;
}
}
}
while (B == 0);
return 0;
}
0
Rejoignez-nous