Accueil > Forum > > > > CRYPTAGE !!!
CRYPTAGE !!!
mardi 8 juin 2004 à 15:15:58 |
CRYPTAGE !!!

megaman
|
Voilà j'essai de faire un log de cryptage à l'aide de fonctions et procédure. Les fonctions et procédures : Une fonction qui retourne le nom de fichier une qui retourne le nombre de char une qui compte les char une pour cryptage et une pour décryptage Biensur pour chacun on ouvre le fichier texte en insérant le nom. Et j'ai une merde dans mon code pourriez vous m'aider c'est urgent SVP !!!! #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <string> using namespace std;
/*********** RETOUR DU NOM DU FICHIER ********************/
char retournom() { char NOMFICH[15]; //nom du fichier FILE *FICHIER; //pointeur sur fichier
//OUVERTURE DU FICHIER do{
printf("Tapper le nom du fichier qui doit être traiter : "); scanf("%s", NOMFICH); FICHIER = fopen(NOMFICH, "r"); //ouverture en lecture //TEST D'OUVERTURE DU FICHIER if(!FICHIER) printf("\aERREUR: Impossible d'ouvrir " "le fichier: %s.\n", NOMFICH); } while(!FICHIER); fclose(FICHIER); return NOMFICH[15]; }
/*********************FIN RETOUR NOM FICHIER ************/
/*********** RETOURNE LE NOMBRE DE CARACTERES **********/
int comptechar() { //DECLARATIONS
char NOMFICHIER[15]; FILE *FICHIER; //pointeur sur fichier char C; //caractères lu dans le fichier int NTOT=0; //nombre de caractère total et initialisation NOMFICHIER[15]=retournom(); printf("nom fichier : ",NOMFICHIER); //DEBUT
//OUVERTURE DU FICHIER do{
// printf("Tapper le nom du fichier qui doit être traiter : "); // scanf("%s", NOMFICH); FICHIER = fopen(NOMFICHIER, "r"); //ouverture en lecture
//TEST D'OUVERTURE DU FICHIER if(!FICHIER) printf("\aERREUR: Impossible d'ouvrir " "le fichier: %s.\n", NOMFICHIER); } while(!FICHIER);
//COMPTER LES CHARS while(!feof(FICHIER)) { C=fgetc(FICHIER);
if(!feof(FICHIER)) { NTOT++; //incrémente de 1 à chaque fois }
} fclose(FICHIER); //FERMETURE DU FICHIER
//RESULTAT printf("le fichier contient %d ", NTOT); printf("mots\n"); return NTOT; //retour du nombre de char
}
/******************* FIN FONCTION RETOUR NOMBRE DE CHARS**************/
/********** RETOURNE LE POINTEUR SUR TEXTE ***********/
//char lecturechar(FILE *FICH) //{ // char lecture; //stockage des caractères
// while(!feof(FICH)) // { // lecture=fgetc(FICH); // } // return lecture; // cout<<"******* : "<<lecture; //}
/******************** FIN LECTURE ET RETOUR TEXTE *************************/
/******************* CRYPTAGE DU TEXTE *************************/
void crypt(char txt[255]) { /* DECLARATIONS */ int j=0; //entier pour boucle int i=0; int nbrchar; //nombre de char de comptechar() char crypto[255]; //caractères de cryptage char txtcrypt[255]; //texte crypté
//DEBUT
nbrchar=comptechar(); //nbrchar prends la val de comptechar()
for(i=0; i<255; i++) //initialisation boucle cryptage { crypto[i]=0+i; } //FIN
txtcrypt[255]=txt[255];
for(j=0;j<nbrchar;j++) { txtcrypt[j]=txtcrypt[j]+crypto[j]; }
// monfichier1=fopen(fichier1,
cout<<"Voici le texte crypté : "<<txtcrypt;
}
/****** FIN CRYPTAGE ***********************************/
/*********** FONCTION DECRYPTAGE ***********************/
void decrypt(char txt[255]) //fonction de décryptage du texte { int i=0; int j=0; int nbrchar; //nombre char de compte char char crypto[255]; char decrypt[255]; //texte decrypté char crypt[255];
// FILE *monfichier1; //déclarations pour le fichier séq // char *fichier1; //idem // size_t retour1; //idem // fichier1="decrypto.txt"; //idem
nbrchar=comptechar(); //nbrchar prends la valeur de comptechar()
for(i=0; i<255; i++) //initialisation boucle cryptage { crypto[i]=0+i; }
crypt[255]=txt[255];
for(j=0;j<nbrchar;j++) { decrypt[j]=crypt[j]-crypto[j]; }
cout<<"voici le fichier decrypter : "<<decrypt; }
/***************** FIN DECRYPTAGE ***********************/
/***************** PROG APPELANT ************************/
void main() { /*DECLARATIONS*/
char txtcrypt[255]; //texte crypté char txtdecrypt[255]; //texte décrypté int i=0; //entier pour boucle int j=0; int num; //numéro du menu char yop[15];
//MENU
cout<<" ****************************************\n"; cout<<" * *\n"; cout<<" * BIENVENUE *\n"; cout<<" * *\n"; cout<<" * 1. Crypter un texte *\n"; cout<<" * 2. Decrypter un texte *\n"; cout<<" * 3. Credits | Aide *\n"; cout<<" * 4. Quitter *\n"; cout<<" * *\n"; cout<<" ****************************************\n"; cout<<endl; cout<<"Saisir le numero de l'action a effectuer : "; cin>>num;
int com; switch(num) { case 1: crypt(txtcrypt);
break; case 2: decrypt(txtdecrypt); break;
case 3: //appel de la fonction cout<<retournom(); //cout<<comptechar(); break; } //FIN MENU
}
/************* FIN APPELANT ***************************/
|
|
|
jeudi 10 juin 2004 à 12:11:03 |
Re : CRYPTAGE !!!

D1m3x
|
Salut, je n'ai fait que survolé le fichier, alors tout d'abord je ne vois pas trop l'utilité de la fonction retournom( ), vu que c'est DANS la fonction que le nom est donné... elle prendrai un peu de sens si tu avais par exemple une structure LeFichier, qui contient un membre strNom et puis alors la fonction retournerait ce nom etc. ensuite pour les fonction crypt( ) et decrypt( ), tu ne permet de que de crypter/dérypter 254 caractère à la fois, ce qui n'est pas tellement utile vu que beaucoups de fichiers contienne nettement plus :) alors je te conseille un pointeur vers un char. ensuite la fonction crypt( ) tu affiche le texte crypté à la fin, ce qui n'est pas trop super, car ca peut ralentir le tout car afficher des 1000 de caractere c pas tro rapid (mm si pr le moment tu nen otorise ke 254...) alors je te conseille de declarer ta fonction crypt () de cette facon: char *crypt( char *in_szTxtToCrypt ); ce qui va donc te permettre de retourner le texte crypté. alors tu auras ta fonction a peu pres comme ca: char *crypt( char *in_pszTxtToCrypt ) { // en esperant ke la fonction est ok... int iNmbChar = comptechar( ); char szCrypto[ 255 ]; char *pszCrypt = ( char * ) malloc ( strlen( in_pszTxtToCrypt ) + 1 );
for ( int i = 0; i < 255; i++ ) szCrypto[ i ] = 0 + i;
strcpy( pszCrypt, in_pszTxtToCrypt ); for( int j = 0; j <= iNmbChar; i++ ) { if ( j > 255 ) pszCrypt[ j ] = pszCrypt[ j ] + szCrypto[ j - 255 ]; else pszCrypt[ j ] = pszCrypt[ j ] + szCrypto[ j ]; }
return pszCrypt }
|
maintenant je crois ke ca devrait marcher en recopiant la fonction crypt( ) j'ai vu ke tu avais fait un erreur: txtcrypt[ 255 ] = txt[ 255 ]; ne veut pas dire ke tu copie les 254 caractères mais ke le DERNIER caractere de txtcrypt est egal au DERNIER de txt!!! ben look un peu ma fonction et fait a peu pres la mm choz pour le decrypt ;) ciao :) [DmX]
|
|
vendredi 11 juin 2004 à 14:45:02 |
Re : CRYPTAGE !!!

megaman
|
merci pour ton aide mais là j'ai un autre prob car j'ai décidé de le faire en objet et je trouve pas le moyen d'écrire dans le fichier sachant que ce n'est pas une structure (je v tester ton truc tout de meme ;) ) pourrait tu jeté un coup d'oeil à cette nouvelle version stp : le header file :
/*class*/ /*- "hearder.h" -*/
#include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <string> using namespace std;
class fichier { //VARIABLES protected: char file[15]; //nom fichier char *fileout; //pointeur sur fichier de sortie (crypté ou décrypté) FILE *FICHIER; //pointeur fichier d'ouverture FILE *FICHIEROUT;//pointeur sur fileout char C[65]; // caractère lue dans le fichier int NTOT; //nombre total de char int i; //var pour la boucle de cryptage incrémentation int j; //var d'écriture et compar avec NTOT char operation[65]; //le char de sorti cryptage ou decryptage char ope2[65]; char txt[65];
//METHODES
public: void init1(); //init, saisie nom fichier et open en read void initC(); //init, Cryptage et open en write void initD(); // init Décryptage et open write void chara(); //retourne le nombre de char et stock les char dans Var "char C" void boucleC(); //boucle de cryptage void fermeture1(); // effectue un fclose pour fermer le fichier de traitement FICHIER void fermeture2(); //effectue un fclose pour le fichier de sortie FICHIEROUT void credits(); };
/************************* INIT1()**************************/ /***********************************************************/ void fichier::init1() //Permet la saisie du nom de fichier voulu et l'ouvre { do{ printf("Saisir le nom du fichier a traiter : "); scanf("%s", file); //saisie du nom du fichier FICHIER=fopen(file, "r"); //effectue un read du fichier
//Test ouverture du fichier
if(!FICHIER) printf("\aErreur : IMPOSSIBLE D'OUVRIR " "le fichier : %s.\n", file); } while(!FICHIER);
}
/************************* INITC()**************************/ /***********************************************************/ void fichier::initC() //cryptage { fileout="crypte.txt"; //génération du fichier de sortie crypte.txt do{ printf("Creation du fichier de sortie ...\n\n"); printf("Il se situe dans le meme répertoire\n\n"); printf("que le fichier source.\n\n"); //créer fichier de sorti FICHIEROUT=fopen(fileout, "w"); //ouverture du fichier de sorti en écriture
do{ //cryptage dans la var txt for(j=0; j<NTOT; j++) { txt[j]=C[j]+operation[j]; } } while(j<NTOT);
for(j=0; j<NTOT; j++) { cout<<txt[j]; }
} while(!FICHIER); fprintf(fileout,txt);
//manque écrire dans le put1 de fichier }
/************************* INITD()**************************/ /***********************************************************/
void fichier::initD() { fileout="decrypte.txt"; //création du fichier de sortie decrypte.txt do{ printf("Creation du fichier de sortie ...\n"); printf("Il se situe dans le meme repertoire\n"); printf("que le fichier source.\n"); //créer le fichier de sorti FICHIEROUT=fopen(fileout, "a+"); //ouverture de fileout en écriture do{ //decryptage dans txt for(j=0; j<NTOT; j++) { txt[j]=C[j]-operation[j]; } } while(j<NTOT); //manque écrire dans le putain de fichier } while(!FICHIEROUT); }
/************************* chara()**************************/ /***********************************************************/
void fichier::chara() { //compter les chars
while(!feof(FICHIER)) { C[65]=fgetc(FICHIER); //les chars sont stockés dans C if(!feof(FICHIER)) { NTOT++; //incrémentation de 1 //compte les chars } } printf("Le fichier contient %d ", NTOT); printf(" mots\n");
}
/************************* boucleC()************************/ /***********************************************************/
void fichier::boucleC() //initialisation boucle de cryptage { for (i=0; i<NTOT; i++) { operation[i]=operation[i]+(65+i); } }
/************************* fermeture1()*********************/ /***********************************************************/
void fichier::fermeture1() //fermeture du fichier à traiter { fclose(FICHIER); }
/************************* fermeture2()*********************/ /***********************************************************/
void fichier::fermeture2() //fermeture du fichier de sortie { fclose(FICHIEROUT); }
/***********************************************************/ /***********************************************************/
void fichier::credits() { printf(" - Credit - \n"); printf("Realise par Sanchez Damien\n"); printf("pour la société Periscope Creation\n\n"); printf("----------------------------------------------\n\n"); printf(" - Aide - \n"); printf("Le fichier a crypter ou decrypter doit\n"); printf("ce situer dans le meme repertoire que le\n"); printf("celui de l'application.\n\n"); printf("Le fichier de sortie se nommera selon l'action\n"); printf("effectue 'crypte.txt' ou 'decrypte.txt'\n"); }
----------------- le *.cpp
/* APPLICATION CRYPTO - OBJET */ /*- APP-Crypto.cpp -*/
#include "hearder.h" // appel du fichier hearder.h
fichier FICHIER; //déclaration de FICHIER de type class fichier
void main() {
//VARS int num; //Sélection du menu int men;
//MENU
cout<<" ****************************************\n"; cout<<" * *\n"; cout<<" * BIENVENUE *\n"; cout<<" * *\n"; cout<<" * 1. Crypter un texte *\n"; cout<<" * 2. Decrypter un texte *\n"; cout<<" * 3. Credits | Aide *\n"; cout<<" * 4. Quitter *\n"; cout<<" * *\n"; cout<<" ****************************************\n"; cout<<endl; cout<<"Saisir le numero de l'action a effectuer : "; cin>>num;
switch(num) { case 1: FICHIER.init1(); FICHIER.chara(); FICHIER.fermeture1(); FICHIER.boucleC(); FICHIER.initC(); FICHIER.fermeture2(); break; case 2: FICHIER.init1(); FICHIER.chara(); FICHIER.fermeture1(); FICHIER.initD(); FICHIER.fermeture2(); break;
case 3: FICHIER.credits(); printf("\n"); printf("Revenir au menu principal ? : "); cin>>men;
switch(men) { case 1: main(); break; case 2: //quitter break; } break;
case 4: //quitter break; } //FIN MENU }
|
je pense pas que le cpp te soit d'une grande utilité mais on ne sait jamais
|
|
vendredi 11 juin 2004 à 16:38:50 |
Re : CRYPTAGE !!!

D1m3x
|
Salut, bonne idee de le faire en objet c'est mieux lol :) enfin deja tu n'as pa de constructeur pour ta class fichier !! ce ki fait ke tu ne sais pas creer d'objet pour celle-ci, le constructeur te permettrait de laisser tomber les fonction init( ) :) enfin alors tu pourrais par exemple choisir une fonction init par défaut (une ki doit TOUJOURS etre executee avant ke les otres ne puisse letre) par exemple alors le code de init1( ) tu le remplace par le constructeur de la fonction et comme ca chaque fois que tu creera un objet le fichier sera ouvert! et le destructeur de ta class tu peux lutiliser pour fclose() les 2 fichiers!
bon esaye deja de faire ca et reecris apres ;)
ciao ;)
[DmXx]
|
|
samedi 12 juin 2004 à 14:32:51 |
Re : CRYPTAGE !!!

megaman
|
merci ça marche ;) sinon comment je fais pour affecter un ofstream pour écire dans le fichier car j'ai trouvé un truc dans un bouquin mais ça ne marche pas pour une affectation : ofstream FichierSortie("C:\\TEST.TXT"); if(!FIchierSortie) { printf("Impossible ouvrir fichier IN"); return 1; } FichierSortie<<"taux=\n"<<20.6; FichierSortie.close();
|
car je veux que mon fichier créée aléatoirement par le user devienne de type ifstream afin de lire correctement dans le fichier (je sais que ça le fait déjà sinon je n'arriverais pas retourner le bon nombre de char du fichier.
|
|
samedi 12 juin 2004 à 19:13:54 |
Re : CRYPTAGE !!!

D1m3x
|
salut pour pouvoir faire cela par exemple tu pourrais faire dans ta class un operateur '<<' ke tu declare alors ds ta class ensuite tu met come parametre un std::string (ou un char* comme tu prefere) et pi tu fais kil ajoute ce string dans le fichier...
si t'as des problemes tu demande!! ( je v pas te fair tout ton code alors je te donne les details ;) si ta encore rien vu sur les operator dis le et laiss tn mail jtenverai un tuto! :)
ciao ;)
|
|
jeudi 2 décembre 2004 à 16:47:05 |
Re : CRYPTAGE !!!

AshenShugar
|
Dites moi, il y a ce morceau de code : do{ printf("Saisir le nom du fichier a traiter : "); scanf("%s", file); //saisie du nom du fichier FICHIER=fopen(file, "r"); //effectue un read du fichier
//Test ouverture du fichier
if(!FICHIER) printf("\aErreur : IMPOSSIBLE D'OUVRIR " "le fichier : %s.\n", file); } while(!FICHIER);
|
Si je rentre un nomde fichier erroné, ca ne boucle pas ?! Je fais un prog qui utilises un truc a peu pres pareil mais avec des nombres. Et lorsque je boucle parce que la saisie n'est pas correct, il ne s'arrete plus au scanf, je comprends pas pourquoi
|
|
Cette discussion est classée dans : fichier, ouverture, printf, char, nomfich
Répondre à ce message
Sujets en rapport avec ce message
Debutant : ecrire et lire un fichier txt [ par manu ]
Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl
Aide fichier :) [ par asnow ]
Salut a tous :)Voila mon tit code pour ouvrir un fichiervoid Ouverture () {char nomf[20]; printf("Entrez le nom du fichier :"); scanf("%s", nomf
Un problème d'ouverture de fichier sous C [ par Flo001 ]
Rien que de la bidouilleVotre texte ICIBonjour a tous...je suis étudiant un Gestion des télécommunications et de réseaux....Je commence tout juste à p
[debutant]attribution dun mot a une char et comparaison ... [ par DarkEbola ]
en fait, jaurais aimé attribuer du texte a une charkke chose comme 500 ou 600 caracteres maximais jarrive pas a lui attribuer plus de 1 Charsuis-je pl
Je cherche l'erreur [ par ScorpionTiti ]
J'ai effectué un programme qui me permette d'écrire dans un fichier et je l'ai compilé. En le lançant, il m'envoie un message d'erreur mais je ne sais
lecture/écriture fichier binaire [ par SesechXP ]
Salut !J'ai un programme modulaire à faire en C sous Borland C++ 5 pour un TP dont la fonction principale est donnée et je dois faire les différentes
SOS manque d'inspiration [ par graall ]
J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich
Problème de lecture fichier [ par nach73 ]
J'ai un enorme probleme je n'arrive pas a lire dans mon fichierVoila la partie de mon programme.Si quelqu'un peux m'aide.Merci.//ouverture du fichier
Aide pour enregistrement fichier en C [ par petit_mateo ]
Voici mon code :#include #include #include int x(){ char ANCIEN[] = "resta.txt"; char NOUVEAU[] = "restb.txt"; FILE *INFILE, *OUTFILE;<
Copier/coller de données contenue dans un fichier en C [ par petit_mateo ]
Voici mon code :#include #include #include int x(){ char ANCIEN[] = "resta.txt"; char NOUVEAU[] = "restb.txt"; FILE *INFILE, *OUTFILE;<
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|