Aide Code C++ (Ecriture, comparaison de chaines, remplacement de chaines dans un

JosselynColombet Messages postés 3 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 8 février 2012 - 8 févr. 2012 à 11:37
JosselynColombet Messages postés 3 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 8 février 2012 - 8 févr. 2012 à 21:19
Bonjour, Je m'appel Josselyn et je suis nouveau sur le forum de CppFrance.com
Je travail sur le cryptage des mot de passes depuis plusieurs semaines dans le but d'un oral avec présentation vendredi.
Pour améliorer celle-ci j'essaye de développer un code permettant de prendre une chaîne de caractère stocké dans un fichier pour la copier dans un autre, je m'explique :

J'ai besoin de pouvoir saisir deux chaines et de les stocké dans un fichier sous le model suivant :

chaîne 1 chaîne 1'

chaîne 2 chaîne 2'

chaîne 3 chaîne 3'

ect..

[ la chaîne de gauche correspondant à un mot ou une phrase et celle de droite a son chiffrage en md5. ( J'ai déjà le code me permettant le chiffrage, ici j'ai juste besoin de pouvoir saisir et stockés les chaines ) ]

Pour ensuite pouvoir comparer, grâce a une seconde fonction permettant le parcours du fichier (ou tableau) réaliser plus haut, un mot saisi, au mot stocké dans le fichier.

une fois la comparaison vraie (mot_saisi = chaîne x) pouvoir déplacer le curseur n ligne plus bas pour prendre une chaîne md5 ne correspondant pas au mot saisie pour la stocké dans un second fichier ou tableau

en résumé: je souhaite saisir des chaines dans un fichier, pouvoir ensuite, grâce à une autre procédure, saisir un mot qui sera comparer avec un parcours du fichier ( ou tableau) précédent. Me déplacer dans ce fichier (ou tableau) et saisir un objet de ce fichier et stocké le mot saisie et la chaîne saisie dans un autre tableau ou fichier.

par exemple si le mot_saisi correspond à la chaîne 1 je veux pouvoir me deplacer sur la chaine 1+n et prendre chaine 1'+n

fichier 1 fichier 2
-------------------- -------------------
chaîne 1 chaîne 1'| mot_saisi chaîne 3'+n

chaîne 2 chaîne 2'

chaîne 3 chaîne 3'


J’espère avoir été assez clair dans mes explications
D'avance un grand Merci !

ci joint le code source de ce que j'ai essayer de faire :
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string.h"
#include "fstream"
#include "fstream"
#include <string.h>
#include <string>


using namespace std;



class cryptage
{
private:
char mot;
char hach;

public:

void Init (int Smot,int Shach){mot=Smot;hach=Shach;}
int Consulter(){return hach;}
int Getmot(){return mot;}
};



typedef struct
{
char motc[100];
char hachc[100];

}Scrypt;
Scrypt uncrypt;




void addmot()
{
        ofstream fichier("Hash.txt", ios::app);  // ouverture en écriture à la suite du fichier sans effacer les données.
 
        if(fichier)
        {

int n=1;
int i=20;
int p=1;

cout<< "entrez le mot";
cin>>uncrypt.motc;
cout<< "entrez hash correspondant";
cin>>uncrypt.hachc;
                                fichier<> m;
ifstream fichier("Hash.txt"); // declaration et ouverture du fichier en lecture 
fichier >> uncrypt.motc >> uncrypt.hachc; // lecture du 1er article du fichier fsalle
while(!fichier.eof()) // tant qu'on est pas arrivé à la fin du fichier
{
if(strcmp(m,uncrypt.motc))! =0) // comparaison de deux chaines
{		m[i]=m[i+n];
strcpy(h,uncrypt.motc);
cout << h;
}

else
{		i=i+1;
fichier >> uncrypt.motc >> uncrypt.hachc;// lecture article suivant
}
}
fichier.close();// fermeture du fichier
}

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 févr. 2012 à 11:53
evite la confusion hash/cryptage


probleme de type :

char mot
int Getmot(){return mot;}

idem pour hash


m[i]=m[i+n];
n n'est pas initialisé
qu'est censée faire cette ligne, de toutes facon ?
un break; serait mieux, non ?

je n'ai pas bien compris ce que tu cherches a faire, au final...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
JosselynColombet Messages postés 3 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 8 février 2012
8 févr. 2012 à 13:31
@ Renfield

Premierement merci pour votre réponse rapide !
J'ai corriger ce que vous m'avez dit cependant je n'arrive toujours pas a faire ce que je veux

Je cherche à entrer des chaines de caractères dans un fichier ou un tableau
suivant le modèle :

fichier
----------
chaîne a chaîne a'

La ou je coince c'est sur le fait de comparer deux chaines en, en saisissant une.
exemple :

je saisis : bonjour ( qui correspond a une chaîne de la première colonne)
et j'aimerais parcourir le fichier jusqu’à trouver le mot "bonjour" [mot saisi] dans le fichier. (préalablement rentré avec addmot(). En fait avec addmot() je créer une sorte de bibliothèque que j'aimerais réutiliser et parcourir)
une fois la correspondance trouver j'aimerais saisir un entier n pour pouvoir me déplacer dans le fichier de n lignes

d'où m[i]=m[i+n]; qui est certainement quand même fausse et inutile ^^'
et pour finir j'aimerais copier la chaîne de gauche ( exemple : chaîne x') dans un second fichier (ou tableau)
en suivant le premier modèle c'est à dire :

fichier2
---------
Bonjour (mot_saisi) chaîne x'


J’espère avoir été plus clair !
D'avance merci !
0
JosselynColombet Messages postés 3 Date d'inscription mercredi 8 février 2012 Statut Membre Dernière intervention 8 février 2012
8 févr. 2012 à 21:19
Je m'excuse du double post, mais je n'ai pas trouvé la fonction edit*

j'ai donc essayer d'avancer et j'en suis rendu ici la classe ne m’étant ici pas utile je l'ai enlever mais je n'arrive toujours pas à comparer les deux chaines et afficher uncrypt.hachc; correspondant a la chaîne saisie. et donc je n'arrive pas à me déplacer dans le fichier de n ligne :/
D'avance merci



typedef struct
{
std::string motc;
std::string hachc;

}Scrypt;
Scrypt uncrypt;



void addmot()
{
        ofstream file("Hash.txt", ios::app);  // ouverture en écriture à la suite du fichier sans effacer les données.
 
        if(file)
        {

int n=1;
int i=20;
int p=1;

cout<< "entrez le mot";
cin>>uncrypt.motc;
cout<< "entrez hash correspondant";
cin>>uncrypt.hachc;
                file<> m;
while (file)
{
std::getline(file, line);
++nb;
if (line.find(m)) // ou if (uncrypt.hachc==m) ??
{
std::cout << "Correspondance trouvé" << line.find(m) << std::endl;
}
}
getch();
}
0
Rejoignez-nous